From 5bfea4421fbc2deaadb2ae3daf4d9fc34e735a0f Mon Sep 17 00:00:00 2001 From: Gijs Date: Mon, 31 May 2021 16:17:34 +0200 Subject: [PATCH] Workshop material. --- example-styles.css | 83 + hello-world.html | 14 + hello-world.py | 4 + ...Tools-shapes-practice-shapes-tools-osp.png | Bin 0 -> 48377 bytes presentation/presentation.html | 320 ++ .../static/fonts/belgika/COPYRIGHT.md | 3 + presentation/static/fonts/belgika/FONTLOG.md | 174 + presentation/static/fonts/belgika/LICENSE.txt | 93 + presentation/static/fonts/belgika/README.md | 224 ++ .../fonts/belgika/belgika-16th-webfont.ttf | Bin 0 -> 47708 bytes .../fonts/belgika/belgika-40th-webfont.ttf | Bin 0 -> 45048 bytes .../fonts/belgika/belgika-5th-webfont.ttf | Bin 0 -> 44688 bytes .../fonts/belgika/belgika-8th-webfont.ttf | Bin 0 -> 48760 bytes presentation/static/slidy.css | 403 +++ presentation/static/slidy.js | 3077 +++++++++++++++++ 15 files changed, 4395 insertions(+) create mode 100644 example-styles.css create mode 100644 hello-world.html create mode 100644 hello-world.py create mode 100644 presentation/images/Tools-shapes-practice-shapes-tools-osp.png create mode 100644 presentation/presentation.html create mode 100644 presentation/static/fonts/belgika/COPYRIGHT.md create mode 100644 presentation/static/fonts/belgika/FONTLOG.md create mode 100644 presentation/static/fonts/belgika/LICENSE.txt create mode 100644 presentation/static/fonts/belgika/README.md create mode 100644 presentation/static/fonts/belgika/belgika-16th-webfont.ttf create mode 100644 presentation/static/fonts/belgika/belgika-40th-webfont.ttf create mode 100644 presentation/static/fonts/belgika/belgika-5th-webfont.ttf create mode 100644 presentation/static/fonts/belgika/belgika-8th-webfont.ttf create mode 100644 presentation/static/slidy.css create mode 100644 presentation/static/slidy.js diff --git a/example-styles.css b/example-styles.css new file mode 100644 index 0000000..ca95d5d --- /dev/null +++ b/example-styles.css @@ -0,0 +1,83 @@ +@page { + /* width and height. In this case for an A5 */ + size: 148.5mm 210mm; + /* OR */ + /* size: A5 portrait; */ + padding: 0; + marks: crop; + bleed: 5mm; + margin: 25mm; + /* Bigger bleed as weasyprint draws the cropmarks within the bleed*/ +} + + +@page { + @bottom-center { + /** + On every page display the value of the page counter at the bottom center. + The page counter is a special counter created by weasyprint. + */ + content: counter(page); + } +} + +@page:right { + /** + Use a pseudo-selector on the page to display page numbers on right pages + on the right. + */ + @bottom-right { + content: counter(page); + } +} + +@page:left { + /** + Use a pseudo-selector on the page to display page numbers on left pages + on the left. + */ + @bottom-left { + content: counter(page); + } +} + +@page:first { + /** + Selects the first page of the documents. Allows for example for hiding + the page numbers on the cover and / or different page margins there. + */ +} + + +@page:empty { + /** + According to the standards this selector should select empty pages. + In my experience it doesn't always work. + */ +} + +/** Running headers */ + +h1 { + /** + When a header 1 is encoutered set the value of the string + running-header to the value of the header + */ + string-set: running-header content(text); +} + +@page { + @bottom-center { + /** + On every page display the value of running-header at + that moment + */ + content: string(running-header); + } +} + + +#toc li a::after { + float: right; + content: target-counter(attr(href), page); +} \ No newline at end of file diff --git a/hello-world.html b/hello-world.html new file mode 100644 index 0000000..00ac3a1 --- /dev/null +++ b/hello-world.html @@ -0,0 +1,14 @@ + + + + + + Hello world + + +

+ Hello world. +

+

This document started as a website.

+ + \ No newline at end of file diff --git a/hello-world.py b/hello-world.py new file mode 100644 index 0000000..1e7dc14 --- /dev/null +++ b/hello-world.py @@ -0,0 +1,4 @@ +from weasyprint import HTML + +# Let weasyprint deal with reading the files and give the filenames +HTML(filename='hello-world.html').write_pdf('hello-world.pdf') diff --git a/presentation/images/Tools-shapes-practice-shapes-tools-osp.png b/presentation/images/Tools-shapes-practice-shapes-tools-osp.png new file mode 100644 index 0000000000000000000000000000000000000000..c23cefcf20b9b9117b160be71602491b20c74e83 GIT binary patch literal 48377 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 Y+wtZFY6^c1jB^Nrwa3|^%+53Jf2Qu>egFUf literal 0 HcmV?d00001 diff --git a/presentation/presentation.html b/presentation/presentation.html new file mode 100644 index 0000000..f7c35e2 --- /dev/null +++ b/presentation/presentation.html @@ -0,0 +1,320 @@ + + + + + + + + Presentation Session 1 + + + + + + + + + +
+

Anaïs Berck

+ anaisberck.be +
+ +
+

Open Source Publishing

+

Graphic design collective using only Free/Libre Open Source Software.

+ osp.kitchen +
+ +
+ +
+ +
+

Algolit

+

Research group exploring the potential of algorithmic literature.

+ algolit.net +
+ + + + +
+

Algoliterary encounter

+ PDF of the publication
+ Git repository +
+ + +
+

Data Workers

+ PDF of the publication
+ Git repository +
+ + + + + + + + + +
+

Tools of today

+
    +
  • HTML + CSS
  • +
  • Python
  • +
  • Terminal / shell / command line
  • +
  • Weasyprint
  • +
  • Code editor.
    It's not F/LOSS, but I like Microsoft VS Code: code.visualstudio.com
  • +
+
+ +
+

HTML + CSS

+

A web browser!

+
+ + +
+

Python

+

Scripting language.

+

To see if it's installed: open a terminal and type:

+
python3 --version
+

Expected output, a number like:

Python 3.6.9

+

If you don't have python installed it might be:

Command not found

+

Download python: https://www.python.org/downloads/

+
+ + +
+

Weasyprint

+

Python library to convert HTML + CSS to a PDF

+

Install through the terminal:

+
pip3 install weasyprint
+
+ + +
+

Directly from commandline

+
weasyprint http://weasyprint.org weasyprint-website.pdf
+
+ +
+

As library in a script

+
from weasyprint import HTML
+
+HTML(filename=html_filename).write_pdf(output_pdf_filename)
+
+ +
+

CSS: Control page size

+ +
@page {
+  /* width and height. In this case for an A5 */
+  size: 148.5mm 210mm;
+  /* OR */
+  /* size: A5 portrait;  */
+  padding: 0;
+  marks: crop;
+  bleed: 5mm;
+  margin: 25mm;
+  /* Bigger bleed as weasyprint draws the cropmarks within the bleed*/
+}
+
+
+ + +
+

CSS: Page numbers

+ +
@page {
+  @bottom-center {
+    /**
+      On every page display the value of the page counter at the bottom center.
+      The page counter is a special counter created by weasyprint.
+      */
+    content: counter(page);
+  }
+}
+
+
+ +
+

CSS: Fancy page numbers

+ +
@page:right {
+  /**
+    Use a pseudo-selector on the page to display page numbers on right pages 
+    on the right.
+    */
+  @bottom-right {
+    content: counter(page);
+  }
+}
+
+@page:left {  
+  /**
+    Use a pseudo-selector on the page to display page numbers on left pages 
+    on the left.
+    */
+  @bottom-left {
+    content: counter(page);
+  }
+}
+
+ +
+

CSS: Special pages

+ +
@page:first {
+  /**
+    Selects the first page of the documents. Allows for example for hiding
+    the page numbers on the cover and / or different page margins there.
+    */
+}
+
+
+@page:empty {
+  /**
+    According to the standards this selector should select empty pages.
+    In my experience it doesn't always work.
+    */
+}
+
+
+ +
+

CSS: Running headers

+ +
h1 {
+  /** 
+    When a header 1 is encoutered set the value of the string
+    running-header to the value of the header
+  */
+  string-set: running-header content(text);
+}
+
+@page {
+  @bottom-center {
+    /**
+      On every page display the value of running-header at
+      that moment
+    */
+    content: string(running-header);
+  }
+}
+
+
+ + + + + \ No newline at end of file diff --git a/presentation/static/fonts/belgika/COPYRIGHT.md b/presentation/static/fonts/belgika/COPYRIGHT.md new file mode 100644 index 0000000..1317e15 --- /dev/null +++ b/presentation/static/fonts/belgika/COPYRIGHT.md @@ -0,0 +1,3 @@ +All content of this directory are for reference only. +They are all owned by their specific right-holders. +You can watch them for inspiration as well but cannot re-use them without contacting the concerned persons. diff --git a/presentation/static/fonts/belgika/FONTLOG.md b/presentation/static/fonts/belgika/FONTLOG.md new file mode 100644 index 0000000..28f070b --- /dev/null +++ b/presentation/static/fonts/belgika/FONTLOG.md @@ -0,0 +1,174 @@ +Basic Font Information +---------------------- + +osp.foundry.belgica-belgika +Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages. + + +Content of the directory +------------------------ + +construction + shapes1.svg and shapes2.svg + - the svg vectors file with the first and several steps to produce two LGRU logos and most of the letters + belgica.svg + - the svg vectors file with all the base letters at the right size to be copy/pasted in a 1000×1000 font unit in FontForge + +source + belgika-Stroke.sfd + - the base FontForge sfd file with stroked vectors + belgika-5th.sfd + belgika-8th.sfd + belgika-16th.sfd + belgika-40th.sfd + - the FontForge sfd with expanded and scaled contours at nth thickness ratio compared to 800 font unit, capital height of the font + http://fontforge.sourceforge.net/sfdformat.html + +fonts + belgika-5th.otf + belgika-8th.otf + belgika-16th.otf + belgika-40th.otf + - otf fonts, able to be used in most software + belgika-Stroke-PS-type-3 + - Type 3 fonts, just for the pleasure to be still able to generate it, reverse-archaeology. + +documentation/ + some specimens + +ofl.txt: copyright notice header + license +ofl-faq.txt: Frequently Asked Questions about the license and its collaboration model +http://scripts.sil.org/OFL + + +Historical background +(see below, text in French to be translated) +-------------------------------------------- + +Context +------- + +The Belgica cluster started without a name in parallel of the Belgika project. Multiples tracks questioning the relationships between writing (schrift), lettering and typography practices through digital tools are crossing. + +The OSP caravan (Open Source Publishing - http://www.osp.kitchen) is following diverse tracks that insist on stroke fonts, and its very specificities. Some could be listed here by chronological order. + +- Polish road signage W drogę is drawn collectively based on photos collected on the way to Libre Graphics Meeting in Wrocław in 2009. Three tactics are compared : by autotracing, by drawing the contour, and by geometrically drawing centerline. +http://ospublish.constantvzw.org/foundry/w-droge/ + +- After some research on the DIN schriften at the Institute itself in 2008, some versions are redrawn from 1932 plates as fonts with a modularity by blocks, grid based. The centerline version is still to investigate. +http://ospublish.constantvzw.org/foundry/osp-din/ + +- Starting around 2010, some refurbished Roland plotter are used to draw strokes using various pens. Ideally, text could be drawn with single lines letters. But regular fonts produces typically double strokes. Scribus page layout software could print manipulated Truetype fonts with open contours, and a hack prevent the automatic closing operation. Another more broad approach use the public domain Hershey typefaces as python script to simulate pseudo-fonts functions. +https://en.wikipedia.org/wiki/Hershey_font + +- The Metafont format designed for TeX tend to describes characters by mathematical relationships. In 2013, OSP begins with Metadin to test out the modularity "by relationships" to design a revamped DIN family. +http://osp.kitchen/foundry/metadin/ + +- Starting with 2013 Relearn summer school, various experiments are using autotracing by the centerline to generate stroke lettering. +http://relearn.be/2013/r/worksessions::gesturing-paths::notes.html + +- Alfphabet font is a redraw in the nineties by the stroke from the plates of the old Belgian road signage. With no constrast and strict geometry. Published by steps in 2012 and 2014. +http://ospublish.constantvzw.org/foundry/alfphabet/ + +- Vernacular lettering by ingeneers with quite no contrast, like in the Belgika roof on a postcard from the beginning of the century in then-Elisabethville (Congo), share some characteristics with lettering by conceptual artists from the sixties. Enough to start discussions on how these shapes can fit with works of Vincent Meessen. + +- In 2012, Pinpin font is based by Harrisson on the Free Sans, a libre version able to replace the pseudo-neutral Helvetica, by hacking some endings to infect a copyrighted Belgian comic lettering spirit. That kind of neutrality or its post-version is not enough generic to generate a spiral design for the "shape makes practice makes shape makes" LGRU sticker. A basic set of geometric strokes are combined to produce two versions of each capital letter needed. The not-named-at-that-time Belgica is modular by strokes. + +- Elected as most flexible generic font, Belgica is use as drawings for texts for Meessen posters, book in preparation, and its centerline no-weight specificity is more precisely used to design punchers to write three double letters in the copper OORRSS plate. + +- Hershey Sans typeface is used to make a plotter write cartels for the forty differents signature spelling produced in the begining of the twentiest century by Congolese artist Thela Tenduo, for its exhibition in duo with Vincent Meessen in Gent in 2014. +http://www.kioskgallery.be/media/kiosk/ENG_Exhibition-text_kopie.pdf + +- In 2014, its relative simplicity is made at work with Ludi Loiseau and by Pierre Marchand for a program to generate monograms for the made.in social media project. An extended version is quickly derived. Another pseudo-font format is made of json shapes dynamically intertwined on web canvas. + +- After the manual composition of Belgica shapes by graphic designer Delphine Platteuw for 'Personne et les autres' proposal by Vincent Meessen and Katerina Gregos for Venice Biennial 2015, the need for a font family to be used by Stefano Cernuschi at Mousse publisher with regular layout software become clear. Belgika, with its friezed contour Opentype fonts ghosts, is the first occurrence of it. + + +Production +---------- + +- Drawn in Inkscape with two versions for nearly all letters +- Exported in Fontforge with a selection of one of the two shapes +- Stored as stroke font, some shapes optimised for better generation of contours + belgika-stroke.sfd +- Each contour version is generated with a width fraction of the capital height of the font, and scaled to get the total height (with the thickness of the stroke) into the 800 font unit height. The metrics has been scaled accordingly. + belgika-5th.sfd + belgika-8th.sfd + belgika-16th.sfd + belgika-40th.sfd + + +Known issues and future developments +------------------------------------ + +- The spacing needs kerning pairs. +- There is currently no Euro sign. +- Another future version can propose fonts without that scaling operation, to be able to superpose different weights. +- Of course, the switch between two or more shapes by glyph is a future must. + + +Coverage +-------- + +Belgika currently provides the following Unicode coverage: +Basic Latin: U+0020-U+007E - 95 glyphs on 95 +Latin-1 Supplement: U+00a0-U+00FF - 95 glyphs on 96 +Latin Extended-A U+0100-U+017F - 0 glyphs on 128 + + + +Information for Contributors +---------------------------- + +Belgica-Belgika is released under the OFL 1.1 -- http://scripts.sil.org/OFL +For information on what you're allowed to change or modify, consult the ofl.txt and ofl-faq.txt files. The ofl-faq also gives a very general rationale and various recommendations regarding why you would want to contribute to the project or make your own version of the font. + +See the project website for the current trunk and the various branches: +http://ospublish.constantvzw.org/foundry/belgica-belgika + + +ChangeLog +--------- +(This should list both major and minor changes, most recent first.) + +2 January 2015 - Version 1.0 +- Initial release of shapes "Belgica" and fonts "Belgika" (4 weights) by Pierre Huyghebaert + + +Acknowledgements +---------------- + +If you make modifications be sure to add your name (N), email (E), web-address +(W) and description (D). This list is sorted by last name in alphabetical order. + +N: Pierre Huyghebaert +E: pierre@speculoos.com +W: http://www.speculoos.com +D: Typography, testing + +Financial support by Speculoos.com and LGRU.net + + +Historical background +(text in French to be translated) +-------------------------------------------- + +Avant l'apparition de la typographie vers 1450 en Occident, l'expérience de l'écriture était en contraste une pratique extrêmement variée (entre la caroline rapide des scribes et la capitale gravée dans le marbre des romains) et unifiée autour du trait et de son ductus. Le poinçon qui a commencé à dessiner des caractères par leur bord (leur extérieur) dans des matières dures destinées à produire en série des lettres en plomb a introduit une manière indirecte de comprendre la lettre. Et ainsi, depuis plus de cinq siècles, la typographie a été industriellement tenue séparée de l'écriture. Depuis la genèse de la typographie digitale, cette séparation a organiquement été maintenue, en partie par la révérence de la loge des typographes se sentant dépositaires d'une très longue tradition, en partie par souci de commodité par les grands éditeurs logiciels par ailleurs aux prises avec l'effroyable chantier de la gestion encore non entièrement résolue des très nombreux systèmes d'écritures existant dans le monde. + +Quelques initiatives séparées ont émaillé ce large mouvement majoritaire. Quatre cas particuliers semblent intéressants à décrire. + +Un des premiers mouvements de reconstruction de l'Allemagne industrielle après la première guerre mondiale est de mettre en place un institut de normalisation, le Deutsches Institut für Normung (DIN). Et lorsqu'il s'agit, au milieu des années vingt de décrire un système d'écriture standardisé, c'est par le trait et sur une grille que les ingénieurs allemands tentent de rassembler d'une manière cohérente l'ethos de chaque lettre. Pour ces outilleurs, l'épaisseur du tracé est défini par l'outil qui trace, le trait par son centre, la typographie des bords produite est donc un artefact local, perpétuant ainsi trois millénaires d'écriture humaine. Ce standard se plie donc à toutes sortes de variations en fonction des besoins, plus ou moins décrites dans les planches du standard, et reste largement à déduire au cas par cas par le bon sens de ses utilisateurs. + +Dans les années soixante, lorsqu'il semble que les machines à commande numériques commencent à être introduites au US Naval Weapons Laboratory, le DR. Hershey met en place une série d'instructions permettant la gravure de lettres simple pour le marquage industriel et les premiers affichages digitaux à base de vecteurs. Loin du contexte typographique, ce jeu d'instruction circule librement sans licence trop restrictive, et est progressivement implémentée dans nombre d'applications industrielles civiles. Un nombre incalculable de plaques nominatives d'ascenseur sont ainsi gravée avec des lettres dessinées par l'armée américaine. + +À la fin des années septante, le mathématicien Donald Knuth est mécontent du traitement typographique réservé à l'édition de ses équations et décide de mettre en place un système de composition entier, TeX, pour publier ses ouvrages "The Art of Computer Programming" encore en écriture à l'heure actuelle. Confiant de pouvoir construire numériquement l'antédiluvien lien entre typographie et mathématiques, Knuth décrit de manière algorithmique le format Metafont destiné à être utilisé dans TeX. Et c'est principalement par le ductus central que Metafont trace ses lettres et signes. N'utilisant que du code sans support visuel direct, le format est craint ou boudé pendant longtemps par les typographes. Le monde scientifique et lui seul utilise depuis le système TeX avec majoritairement les seules fontes proposées par son créateur, et cela sans souci particulier... + +À la fin des années quatre-vingt, Adobe, après avoir mis en place le standard typographique appelé Type 1 et encore à la base des standards actuels, s'aventure à introduire le Type 3. Ce format permet de stocker dans chaque glyphe (espace visuel décrivant une lettre dans une fonte) n'importe quel type d'objet. Y compris donc des traits simples ouverts ou non plutôt qu'un contour strictement fermé. Ce qui permet à certains typographes d'introduire des polices construites selon un principe de dessin vectoriel se rapprochant de l'écriture. Mais l'ouverture du format, autorisant l'inclusion de tout type d'objet, a tendance à saturer la mémoire encore très restreinte des unités de traitement des imprimantes de l'époque. Et une réputation d'insécurité fait rapidement retirer les Type 3 de la circulation par Adobe, qui ne veut prendre aucun risque de fiabilité des solutions proposées par elle au moment même où Apple et Microsoft l'attaquent avec le format Truetype concurrent du Type 1. + +Hacking +En mélangeant sans hiérarchie précise ces quatre expériences, le collectif OSP (Open Souce Publishing) suit un sentier de traverse pour ramener cette question des 'stroke fonts' régulièrement au milieu de la table. Ainsi un alphabet double est tracé par éléments modulaires dans un logiciel de dessin, à distance des pratiques typographiques. Les lettres y prennent chacune deux formes différentes pour appuyer leur rapport avec l'écriture où l'aspect de chaque lettre peut est adapté en fonction de l'influence visuelle de ses voisines. Un visuel en spirale et récursif expérimente avec un autre type de déformation que ces formes produisent. Ailleurs, un hack modifie la fermeture automatique des fontes considérées par le logiciel de mise en page Scribus comme une erreur mais volontairement introduites pour produire des fontes au trait. Plus loin, le trait est utilisé à l'essence de sa non-épaisseur pour produire la lame sinueuse des poinçons qui frappent les lettres ORS sur des plaques de laiton. Ou encore ces projets de couverture d'ouvrages à paraître où le trait est démultiplié par l'épaisseur sur des lettres superposées. Le trait encore est interrompu par un algorithme pour permettre la création automatique de monogrammes pour un média social en préparation. Le trait toujours, lors de son apparition, gelé temporairement par efficacité pour une fonte à utiliser selon les standards par un tiers en Italie. + +Retour au Belgika +Le propriétaire le demande, il faut un grand Belgika sur le toit de cette baraque, pour marquer le lieu. L'ingénieur trace les sept lettres sur une feuille et les dimensionne. Quelqu'un, ou peut-être étaient-ils deux, peint avec un certain soin chaque lettre. Un empattement est ajouté au G pour lui donner une sorte d'équilibre. La graisse de la barre centrale du B hésite et l'interlettrage est un peu trop mécanique mais le résultat ne manque pas d'élégance. Quand une carte postale immortalise l'alignement des vélos sous cet auvent d'Elisabethville quelques temps après, le contraste des lettres, même en angle, est bien marqué. + +Comment plier ces sommes d'expériences pour les amener vers des formes à superposer. diff --git a/presentation/static/fonts/belgika/LICENSE.txt b/presentation/static/fonts/belgika/LICENSE.txt new file mode 100644 index 0000000..86ffc21 --- /dev/null +++ b/presentation/static/fonts/belgika/LICENSE.txt @@ -0,0 +1,93 @@ +Copyright (c) 2014-2015, Pierre Huyghebaert (pierre@speculoos.com), +with Reserved Font Names Balgica and Balgika (see http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a). + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/presentation/static/fonts/belgika/README.md b/presentation/static/fonts/belgika/README.md new file mode 100644 index 0000000..e53b48e --- /dev/null +++ b/presentation/static/fonts/belgika/README.md @@ -0,0 +1,224 @@ +# Belgica-Belgika + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/belgica.png) + +Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages. + +Direct links to download the fonts: + +* [belgika-5th-webfont.ttf](http://osp.kitchen/api/osp.foundry.belgica-belgika/ecfd91b1bb7800040d352413f27abb8cd3c92538/blob-data/belgika-5th-webfont.ttf) +* [belgika-8th-webfont.ttf](http://osp.kitchen/api/osp.foundry.belgica-belgika/d0c4a6eb6e0b3618b77ebe92743b8517f5368814/blob-data/belgika-8th-webfont.ttf) +* [belgika-16th-webfont.ttf](http://osp.kitchen/api/osp.foundry.belgica-belgika/5260b4052c63c359739ddd024428633bfbea3c4f/blob-data/belgika-16th-webfont.ttf) +* [belgika-40th-webfont.ttf](http://osp.kitchen/api/osp.foundry.belgica-belgika/772c8b28b82269ac022fceee3ec04fc8fb166c3c/blob-data/belgika-40th-webfont.ttf) + +For the sources files and explanations about the production, browse below. + + +## Historical background (version française ci-dessous) + +Before the appearance of typography around 1450 in the West, writing experience was in contrast an extremely varied practice (between the fast caroline of the scribes and the capital engraved in Roman marble) and unified around the line and its ductus. The punch that began to draw characters by their edge (their outside) in hard materials intended to produce lead letters in series introduced an indirect way of understanding the letter. And so, for over five centuries, typography has been kept industrially separate from writing. Since the genesis of digital typography, this separation has been maintained organically, partly by the reverence of the typographers' lodge, which feels itself to be the repository of a very long tradition, partly for the convenience of the major software publishers, who are also grappling with the appalling task of managing the still unresolved management of the many writing systems existing in the world. + +This broad majority movement has been marked by a few separate initiatives. Four particular cases seem interesting to describe. + +One of the first reconstruction movements in industrial Germany after the First World War was the establishment of the Deutsches Institut für Normung (DIN). And when, in the mid-twenties, it was a question of describing a standardized writing system, it was by means of a line and on a grid that the German engineers tried to put together the ethos of each letter in a coherent manner. For these toolmakers, the thickness of the line is defined by the tool which traces, the line by its center, the typography of the edges produced is thus a local artifact, thus perpetuating three millennia of human writing. This standard is therefore subject to all kinds of variations according to needs, more or less described in the standard plates, and remains largely to be deduced on a case-by-case basis by the common sense of its users. + +In the 1960s, when it appeared that CNC machines were beginning to be introduced at the US Naval Weapons Laboratory, the DR. Hershey implements a series of instructions allowing simple letter engraving for industrial marking and the first vector-based digital displays. Far from the typographical context, this instruction game circulates freely without too restrictive license, and is progressively implemented in many civil industrial applications. An incalculable number of elevator name plates are engraved with letters drawn by the American army. + +At the end of the seventies, mathematician Donald Knuth was dissatisfied with the typographical treatment of his equations and decided to set up an entire composition system, TeX, to publish his works "The Art of Computer Programming" still in writing today. Confident in being able to digitally construct the antediluvian link between typography and mathematics, Knuth describes algorithmically the Metafont format intended for use in TeX. And it is mainly through the central ductus that Metafont traces his letters and signs. Using only code without direct visual support, the format is feared or avoided for a long time by typographers. The scientific world and him alone uses since the TeX system with mainly the only fonts proposed by its creator, and that without particular concern... + +At the end of the eighties, Adobe, after having set up the typographic standard called Type 1 and still at the base of the current standards, ventured to introduce Type 3. This format allows to store in each glyph (visual space describing a letter in a font) any type of object. This includes simple lines, open or not, rather than a strictly closed contour. This allows some typographers to introduce fonts built according to a vector drawing principle similar to writing. But the opening of the format, allowing the inclusion of any type of object, tends to saturate the still very limited memory of the processing units of the printers of the time. And a reputation of insecurity quickly removes Type 3 from circulation by Adobe, which does not want to take any risk of reliability of the solutions proposed by it at the very moment when Apple and Microsoft attack it with the Truetype format competitor of Type 1. + +Hacking - By mixing these four experiences without any hierarchy, the OSP (Open Source Publishing) collective follows a traverse path to regularly bring this stroke fonts issue back to the middle of the table. Thus a double alphabet is drawn by modular elements in a drawing software, at a distance from typographical practices. The letters each take two different forms to support their relationship with the writing where the appearance of each letter can be adapted according to the visual influence of its neighbors. A spiral and recursive visual experiment with another type of deformation that these shapes produce. Elsewhere, a hack modifies the automatic closing of fonts considered by the Scribus layout software as an error but voluntarily introduced to produce line fonts. Further on, the line is used at the essence of its non-thickness to produce the sinuous blade of the punches that strike the letters ORS on brass plates. Or these projects of covering works to appear where the line is multiplied by the thickness on superimposed letters. The line is interrupted again by an algorithm to allow the automatic creation of monograms for a social media in preparation. The line always, at the time of its appearance, temporarily frozen by effectiveness for a font to be used according to standards by a third in Italy. + +Return to Belgika - The owner asks for it, it takes a big Belgika on the roof of this barrack, to mark the place. The engineer traces the seven letters on a sheet of paper and dimensions them. Someone, or perhaps both, painted each letter with some care. A wheelbase is added to the G to give it a kind of balance. The grease of the central bar of the B hesitates and the spacing is a little too mechanical but the result does not lack elegance. When a postcard immortalizes the alignment of the bikes under this Elisabethville awning some time later, the contrast of the letters, even at an angle, is well marked. + +How to fold these sums of experience to lead them to superimpose forms. + + +## Context + +The Belgica cluster started without a name in parallel of the Belgika project. Multiples tracks questioning the relationships between writing (schrift), lettering and typography practices through digital tools are crossing. The OSP caravan (Open Source Publishing - http://www.osp.kitchen) is following diverse tracks that insist on stroke fonts, and its very specificities. Some could be listed here by chronological order. + +* Polish road signage W drogę is drawn collectively based on photos collected on the way to Libre Graphics Meeting in Wrocław in 2009\. Three tactics are compared : by autotracing, by drawing the contour, and by geometrically drawing centerline. + http://ospublish.constantvzw.org/foundry/w-droge/ + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/w-droge-workshop.jpg) + +* After some research on the DIN schriften at the Institute itself in 2008, some versions are redrawn from 1932 plates as fonts with a modularity by blocks, grid based. The centerline version is still to investigate. + http://ospublish.constantvzw.org/foundry/osp-din/ + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/din-archive.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/din-stroke.png) + +* Starting around 2010, some refurbished Roland plotter are used to draw strokes using various pens. Ideally, text could be drawn with single lines letters. But regular fonts produces typically double strokes. Scribus page layout software could print manipulated Truetype fonts with open contours, and a hack prevent the automatic closing operation. Another more broad approach use the public domain Hershey typefaces as python script to simulate pseudo-fonts functions. + https://en.wikipedia.org/wiki/Hershey_font + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/plotter.jpg) + +* The Metafont format designed for TeX tend to describes characters by mathematical relationships. In 2013, OSP begins with Metadin to test out the modularity "by relationships" to design a revamped DIN family. + http://osp.kitchen/foundry/metadin/ + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/metadin-tests.png) + +* Starting with 2013 Relearn summer school, various experiments are using autotracing by the centerline to generate stroke lettering. + http://relearn.be/2013/r/worksessions::gesturing-paths::notes.html + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/meta-hershey.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/din-stroke-showing.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/meta-hershey-relearn.pngg) + +* Alfphabet font is a redraw in the nineties by the stroke from the plates of the old Belgian road signage. With no constrast and strict geometry. Published by steps in 2012 and 2014. + http://ospublish.constantvzw.org/foundry/alfphabet/ + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/master/documentation/alfphabet-plate-sample.jpg) + +* Vernacular lettering by ingeneers with quite no contrast, like in the Belgika roof on a postcard from the beginning of the century in then-Elisabethville (Congo), share some characteristics with lettering by conceptual artists from the sixties. Enough to start discussions on how these shapes can fit with works of Vincent Meessen. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/la-belgika-card.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/ferme-belgika.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/broodthaers-exclamation.jpg) + +* In 2012, Pinpin font is based by Harrisson on the Free Sans, a libre version able to replace the pseudo-neutral Helvetica, by hacking some endings to infect a copyrighted Belgian comic lettering spirit. That kind of neutrality or its post-version is not enough generic to generate a spiral design for the "shape makes practice makes shape makes" LGRU sticker. A basic set of geometric strokes are combined to produce two versions of each capital letter needed. The not-named-at-that-time Belgica is modular by strokes. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/pinpin-post-pinpin.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/post-pinpin-on-circle.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/distorstions.png) + +Distortions in weight and at the tip of each stroke. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/shapes-variation.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/sticker-shapes.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/sticker-on-mac-1600px.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/co-position.png) + +* Drawn using only straight lines and arcs, without any complex bezier curves, and elected as most flexible generic font, Belgica is use as drawings for texts for Meessen posters, book in preparation, and its centerline no-weight specificity is more precisely used to design punchers to write three double letters in the copper OORRSS plate. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/vincent-meessen-ocelles-poster.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/vincent-meessen-punchers.jpg) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/vincent-meessen-oorrss.jpg) + +* Hershey Sans typeface is used to make a plotter write cartels for dozen of differents signature spelling produced in the begining of the twentiest century by Congolese artist Thela Tenduo, for its exhibition in duo with Vincent Meessen in Gent in 2014. + http://www.kioskgallery.be/media/kiosk/ENG_Exhibition-text_kopie.pdf + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/vincent-meessen-cartel.jpg) + +* In 2014, its relative simplicity is made at work with Ludi Loiseau and by Pierre Marchand for a program to generate monograms for the made.in social media project. An extended version is quickly derived. Another pseudo-font format is made of json shapes dynamically intertwined on web canvas. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/made.in-3-monograms.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/made.in-monograms-sizes.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/made.in-monograms-in-context.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/monogram-capture.png) + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/extended-for-monogram.png) + +* After the manual composition of Belgica shapes by graphic designer Delphine Platteuw for 'Personne et les autres' proposal by Vincent Meessen and Katerina Gregos for Venice Biennial 2015, the need for a font family to be used by Stefano Cernuschi at Mousse publisher with regular layout software become clear. Belgika, with its friezed contour Opentype fonts ghosts, is the first occurrence of it. + +![](http://osp.kitchen/api/osp.foundry.belgica-belgika/raw/documentation/images/belgika-4-sample-fontforge.png) + + +## Content of the directory + +* fontlog.txt: the font design-oriented changelog + http://openfontlibrary.org/wiki/Fontlog + http://scripts.sil.org/OFL-FAQ_web#00e3bd04 +* construction + * shapes1.svg and shapes2.svg - the svg vectors files with the first and several steps to produce two LGRU logos and most of the letters + * belgica.svg - the svg vectors file with all the base letters at the right size to be copy/pasted in a 1000×1000 font unit in FontForge + * extended-version - the separate files, alphabet, extended version +* source + * belgika-Stroke.sfd - the base FontForge sfd file with stroked vectors + * belgika-5th.sfd, belgika-8th.sfd, belgika-16th.sfd, belgika-40th.sfd - the FontForge sfd with expanded and scaled contours at nth thickness ratio compared to 800 font unit, capital height of the font + http://fontforge.sourceforge.net/sfdformat.html +* fonts + * belgika-5th.otf, belgika-8th.otf, belgika-16th.otf, belgika-40th.otf - otf fonts, able to be used in most software + * belgika-Stroke-PS-type-3 - Type 3 fonts, just for the pleasure to be still able to generate it, reverse-archaeology. +* documentation - some specimens +* ofl.txt: copyright notice header + license +* ofl-faq.txt: Frequently Asked Questions about the license and its collaboration model - http://scripts.sil.org/OFL + + +## Production + +* Drawn in Inkscape with two versions for nearly all letters. +* Exported in Fontforge with a selection of one of the two shapes. +* Stored as stroke font, some shapes optimised for better generation of contours (belgika-stroke.sfd) +* Each contour version is generated with a width fraction of the capital height of the font, and scaled to get the total height (with the thickness of the stroke) into the 800 font unit height, the metrics has been scaled accordingly. +* belgika-5th.sfd +* belgika-8th.sfd +* belgika-16th.sfd +* belgika-40th.sfd + + +## Known issues and future developments + +* The spacing needs kerning pairs. +* There is currently no Euro sign. +* Another future version can propose fonts without that scaling operation, to be able to superpose different weights. +* Of course, the switch between two or more shapes by glyph is a future must. + + +## Coverage + +Belgika currently provides the following Unicode coverage: + +* Basic Latin: U+0020-U+007E - 95 glyphs on 95 +* Latin-1 Supplement: U+00a0-U+00FF - 95 glyphs on 96 +* Latin Extended-A U+0100-U+017F - 0 glyphs on 128 + + +## Information for Contributors + +Belgica-Belgika is released under the OFL 1.1 -- http://scripts.sil.org/OFL For information on what you're allowed to change or modify, consult the ofl.txt and ofl-faq.txt files. The ofl-faq also gives a very general rationale and various recommendations regarding why you would want to contribute to the project or make your own version of the font. See the project website for the current trunk and the various branches: http://ospublish.constantvzw.org/foundry/belgica-belgika + + +## ChangeLog + +(This should list both major and minor changes, most recent first.) + +* 2 January 2015 - Version 1.0 + - Initial release of shapes "Belgica" and fonts "Belgika" (4 weights) by Pierre Huyghebaert + + +## Acknowledgements + +If you make modifications be sure to add your name (N), email (E), web-address (W) and description (D). This list is sorted by last name in alphabetical order. +N: Pierre Huyghebaert +E: pierre@speculoos.com +W: http://www.speculoos.com +D: Typography Financial support by Speculoos.com and LGRU.net + + +## Contexte historique + +Avant l'apparition de la typographie vers 1450 en Occident, l'expérience de l'écriture était en contraste une pratique extrêmement variée (entre la caroline rapide des scribes et la capitale gravée dans le marbre des romains) et unifiée autour du trait et de son ductus. Le poinçon qui a commencé à dessiner des caractères par leur bord (leur extérieur) dans des matières dures destinées à produire en série des lettres en plomb a introduit une manière indirecte de comprendre la lettre. Et ainsi, depuis plus de cinq siècles, la typographie a été industriellement tenue séparée de l'écriture. Depuis la genèse de la typographie digitale, cette séparation a organiquement été maintenue, en partie par la révérence de la loge des typographes se sentant dépositaires d'une très longue tradition, en partie par souci de commodité par les grands éditeurs logiciels par ailleurs aux prises avec l'effroyable chantier de la gestion encore non entièrement résolue des très nombreux systèmes d'écritures existant dans le monde. + +Quelques initiatives séparées ont émaillé ce large mouvement majoritaire. Quatre cas particuliers semblent intéressants à décrire. + +Un des premiers mouvements de reconstruction de l'Allemagne industrielle après la première guerre mondiale est de mettre en place un institut de normalisation, le Deutsches Institut für Normung (DIN). Et lorsqu'il s'agit, au milieu des années vingt de décrire un système d'écriture standardisé, c'est par le trait et sur une grille que les ingénieurs allemands tentent de rassembler d'une manière cohérente l'ethos de chaque lettre. Pour ces outilleurs, l'épaisseur du tracé est défini par l'outil qui trace, le trait par son centre, la typographie des bords produite est donc un artefact local, perpétuant ainsi trois millénaires d'écriture humaine. Ce standard se plie donc à toutes sortes de variations en fonction des besoins, plus ou moins décrites dans les planches du standard, et reste largement à déduire au cas par cas par le bon sens de ses utilisateurs. + +Dans les années soixante, lorsqu'il semble que les machines à commande numériques commencent à être introduites au US Naval Weapons Laboratory, le DR. Hershey met en place une série d'instructions permettant la gravure de lettres simple pour le marquage industriel et les premiers affichages digitaux à base de vecteurs. Loin du contexte typographique, ce jeu d'instruction circule librement sans licence trop restrictive, et est progressivement implémentée dans nombre d'applications industrielles civiles. Un nombre incalculable de plaques nominatives d'ascenseur sont ainsi gravée avec des lettres dessinées par l'armée américaine. + +À la fin des années septante, le mathématicien Donald Knuth est mécontent du traitement typographique réservé à l'édition de ses équations et décide de mettre en place un système de composition entier, TeX, pour publier ses ouvrages "The Art of Computer Programming" encore en écriture à l'heure actuelle. Confiant de pouvoir construire numériquement l'antédiluvien lien entre typographie et mathématiques, Knuth décrit de manière algorithmique le format Metafont destiné à être utilisé dans TeX. Et c'est principalement par le ductus central que Metafont trace ses lettres et signes. N'utilisant que du code sans support visuel direct, le format est craint ou boudé pendant longtemps par les typographes. Le monde scientifique et lui seul utilise depuis le système TeX avec majoritairement les seules fontes proposées par son créateur, et cela sans souci particulier... + +À la fin des années quatre-vingt, Adobe, après avoir mis en place le standard typographique appelé Type 1 et encore à la base des standards actuels, s'aventure à introduire le Type 3. Ce format permet de stocker dans chaque glyphe (espace visuel décrivant une lettre dans une fonte) n'importe quel type d'objet. Y compris donc des traits simples ouverts ou non plutôt qu'un contour strictement fermé. Ce qui permet à certains typographes d'introduire des polices construites selon un principe de dessin vectoriel se rapprochant de l'écriture. Mais l'ouverture du format, autorisant l'inclusion de tout type d'objet, a tendance à saturer la mémoire encore très restreinte des unités de traitement des imprimantes de l'époque. Et une réputation d'insécurité fait rapidement retirer les Type 3 de la circulation par Adobe, qui ne veut prendre aucun risque de fiabilité des solutions proposées par elle au moment même où Apple et Microsoft l'attaquent avec le format Truetype concurrent du Type 1. + +Hacking - En mélangeant sans hiérarchie précise ces quatre expériences, le collectif OSP (Open Source Publishing) suit un sentier de traverse pour ramener cette question des 'stroke fonts' régulièrement au milieu de la table. Ainsi un alphabet double est tracé par éléments modulaires dans un logiciel de dessin, à distance des pratiques typographiques. Les lettres y prennent chacune deux formes différentes pour appuyer leur rapport avec l'écriture où l'aspect de chaque lettre peut est adapté en fonction de l'influence visuelle de ses voisines. Un visuel en spirale et récursif expérimente avec un autre type de déformation que ces formes produisent. Ailleurs, un hack modifie la fermeture automatique des fontes considérées par le logiciel de mise en page Scribus comme une erreur mais volontairement introduites pour produire des fontes au trait. Plus loin, le trait est utilisé à l'essence de sa non-épaisseur pour produire la lame sinueuse des poinçons qui frappent les lettres ORS sur des plaques de laiton. Ou encore ces projets de couverture d'ouvrages à paraître où le trait est démultiplié par l'épaisseur sur des lettres superposées. Le trait encore est interrompu par un algorithme pour permettre la création automatique de monogrammes pour un média social en préparation. Le trait toujours, lors de son apparition, gelé temporairement par efficacité pour une fonte à utiliser selon les standards par un tiers en Italie. + +Retour au Belgika - Le propriétaire le demande, il faut un grand Belgika sur le toit de cette baraque, pour marquer le lieu. L'ingénieur trace les sept lettres sur une feuille et les dimensionne. Quelqu'un, ou peut-être étaient-ils deux, peint avec un certain soin chaque lettre. Un empattement est ajouté au G pour lui donner une sorte d'équilibre. La graisse de la barre centrale du B hésite et l'interlettrage est un peu trop mécanique mais le résultat ne manque pas d'élégance. Quand une carte postale immortalise l'alignement des vélos sous cet auvent d'Elisabethville quelques temps après, le contraste des lettres, même en angle, est bien marqué. + +Comment plier ces sommes d'expériences pour les amener vers des formes à superposer. diff --git a/presentation/static/fonts/belgika/belgika-16th-webfont.ttf b/presentation/static/fonts/belgika/belgika-16th-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5260b4052c63c359739ddd024428633bfbea3c4f GIT binary patch literal 47708 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 literal 0 HcmV?d00001 diff --git a/presentation/static/fonts/belgika/belgika-40th-webfont.ttf b/presentation/static/fonts/belgika/belgika-40th-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..772c8b28b82269ac022fceee3ec04fc8fb166c3c GIT binary patch literal 45048 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

~?lPdzrliDQF>R-<X zzXN64!G6pBgT2CDWv{VMF?PRaujAXW4}$i7&aP&CY$tmQ6!>rKGi1M70lInyX!lCc z#alri&jc4G%1D%UJ*eeh!H>=XwLX_^WaqI**=_6sc0Rk1UBvdVzq7~q(R>=8&X3_U z_)L5f`Zzv|AJ1p=6ZnZ7zNM^(pUh9;ZOYP>8`dnVQ`fCt4h)=Zmht1Tc^omzdb4aW z%SN+oGRtPOY%$9TW;xL;Cz<6Gvz%&_b+u+`)>~)RTW8i=XVzP1)>~)RTW8i=XVzP1 z)>~)RTW8i=XVzP1_OH&Yzs{_`$t;`Ab~KyqXg1r?Y__A>Y)7-%j%KqR&1O5A&2}`K z?PxaJ(QLM(*=$F%*^Xwj9nEI_EoS{KX8kQ@{VitwEoS{KX8kQ@{VitwEoS{KX8kQ@ z{VitwEoS{KX8kQ@{Vitw6U_Q2nAazo^-nbGpD5lN2BOe-p%m>zDegll?n5csiBhx^ zrD!Kg(N2`2ohak)6YT`|Hs4!Um$YR0(sf-Oi`&;OGpY)UCWdPpjIv?sB&-Vf;2@|G z2LYr7SUPBrL}$4VTMN!m(ZTD_b%|77Z++W?@7m7klMpfWzX171 Bx+wqv literal 0 HcmV?d00001 diff --git a/presentation/static/fonts/belgika/belgika-5th-webfont.ttf b/presentation/static/fonts/belgika/belgika-5th-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ecfd91b1bb7800040d352413f27abb8cd3c92538 GIT binary patch literal 44688 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 ElFB1% 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

+ collect_notes: function () { + var notes = new Array(); + var divs = document.body.getElementsByTagName("div"); + + for (var i = 0; i < divs.length; ++i) + { + div = divs.item(i); + + if (this.has_class(div, "handout")) + { + // add note to collection + notes[notes.length] = div; + + // and hide it + this.add_class(div, "hidden"); + } + } + + this.notes = notes; + }, + + // return new array of all
+ // including named backgrounds e.g. class="background titlepage" + collect_backgrounds: function () { + var backgrounds = new Array(); + var divs = document.body.getElementsByTagName("div"); + + for (var i = 0; i < divs.length; ++i) + { + div = divs.item(i); + + if (this.has_class(div, "background")) + { + // add background to collection + backgrounds[backgrounds.length] = div; + + // and hide it + this.add_class(div, "hidden"); + } + } + + this.backgrounds = backgrounds; + }, + + // set click handlers on all anchors + patch_anchors: function () { + var self = w3c_slidy; + var handler = function (event) { + // compare this.href with location.href + // for link to another slide in this doc + + if (self.page_address(this.href) == self.page_address(location.href)) + { + // yes, so find new slide number + var newslidenum = self.find_slide_number(this.href); + + if (newslidenum != self.slide_number) + { + var slide = self.slides[self.slide_number]; + self.hide_slide(slide); + self.slide_number = newslidenum; + slide = self.slides[self.slide_number]; + self.show_slide(slide); + self.set_location(); + } + } + else + w3c_slidy.stop_propagation(event); + +// else if (this.target == null) +// location.href = this.href; + + this.blur(); + self.disable_slide_click = true; + }; + + var anchors = document.body.getElementsByTagName("a"); + + for (var i = 0; i < anchors.length; ++i) + { + if (window.addEventListener) + anchors[i].addEventListener("click", handler, false); + else + anchors[i].attachEvent("onclick", handler); + } + }, + + // ### CHECK ME ### see which functions are invoked via setTimeout + // either directly or indirectly for use of w3c_slidy vs this + show_slide_number: function () { + var timer = w3c_slidy.get_timer(); + w3c_slidy.slide_number_element.innerHTML = timer + w3c_slidy.localize("slide") + " " + + (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length; + }, + + // every 200mS check if the location has been changed as a + // result of the user activating the Back button/menu item + // doesn't work for Opera < 9.5 + check_location: function () { + var hash = location.hash; + + if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#")) + w3c_slidy.goto_slide(0); + else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")") + { + var num = parseInt(location.hash.substr(2)); + + if (!isNaN(num)) + w3c_slidy.goto_slide(num-1); + } + + if (w3c_slidy.time_left && w3c_slidy.slide_number > 0) + { + w3c_slidy.show_slide_number(); + + if (w3c_slidy.time_left > 0) + w3c_slidy.time_left -= 200; + } + }, + + get_timer: function () { + var timer = ""; + if (w3c_slidy.time_left) + { + var mins, secs; + secs = Math.floor(w3c_slidy.time_left/1000); + mins = Math.floor(secs / 60); + secs = secs % 60; + timer = (mins ? mins+"m" : "") + secs + "s "; + } + + return timer; + }, + + // this doesn't push location onto history stack for IE + // for which a hidden iframe hack is needed: load page into + // the iframe with script that set's parent's location.hash + // but that won't work for standalone use unless we can + // create the page dynamically via a javascript: URL + // ### use history.pushState if available + set_location: function () { + var uri = w3c_slidy.page_address(location.href); + var hash = "#(" + (w3c_slidy.slide_number+1) + ")"; + + if (w3c_slidy.slide_number >= 0) + uri = uri + hash; + + if (typeof(history.pushState) != "undefined") + { + document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")"; + history.pushState(0, document.title, hash); + w3c_slidy.show_slide_number(); + w3c_slidy.notify_observers(); + return; + } + + if (w3c_slidy.ie && (w3c_slidy.ie6 || w3c_slidy.ie7)) + w3c_slidy.push_hash(hash); + + if (uri != location.href) // && !khtml + location.href = uri; + + if (this.khtml) + hash = "(" + (w3c_slidy.slide_number+1) + ")"; + + if (!this.ie && location.hash != hash && location.hash != "") + location.hash = hash; + + document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")"; + w3c_slidy.show_slide_number(); + w3c_slidy.notify_observers(); + }, + + notify_observers: function () + { + var slide = this.slides[this.slide_number]; + + for (var i = 0; i < this.observers.length; ++i) + this.observers[i](this.slide_number+1, this.find_heading(slide).innerText, location.href); + }, + + add_observer: function (observer) + { + for (var i = 0; i < this.observers.length; ++i) + { + if (observer == this.observers[i]) + return; + } + + this.observers.push(observer); + }, + + remove_observer: function (o) + { + for (var i = 0; i < this.observers.length; ++i) + { + if (observer == this.observers[i]) + { + this.observers.splice(i,1); + break; + } + } + }, + + page_address: function (uri) { + var i = uri.indexOf("#"); + + if (i < 0) + i = uri.indexOf("%23"); + + // check if anchor is entire page + + if (i < 0) + return uri; // yes + + return uri.substr(0, i); + }, + + // only used for IE6 and IE7 + on_frame_loaded: function (hash) { + location.hash = hash; + var uri = w3c_slidy.page_address(location.href); + location.href = uri + hash; + }, + + // history hack with thanks to Bertrand Le Roy + push_hash: function (hash) { + if (hash == "") hash = "#(1)"; + window.location.hash = hash; + + var doc = document.getElementById("historyFrame").contentWindow.document; + doc.open("javascript:''"); + doc.write("hello mum"); + doc.close(); + }, + + // find current slide based upon location + // first find target anchor and then look + // for associated div element enclosing it + // finally map that to slide number + find_slide_number: function (uri) { + // first get anchor from page location + + var i = uri.indexOf("#"); + + // check if anchor is entire page + if (i < 0) + return 0; // yes + + var anchor = unescape(uri.substr(i+1)); + + // now use anchor as XML ID to find target + var target = document.getElementById(anchor); + + if (!target) + { + // does anchor look like "(2)" for slide 2 ?? + // where first slide is (1) + var re = /\((\d)+\)/; + + if (anchor.match(re)) + { + var num = parseInt(anchor.substring(1, anchor.length-1)); + + if (num > this.slides.length) + num = 1; + + if (--num < 0) + num = 0; + + return num; + } + + // accept [2] for backwards compatibility + re = /\[(\d)+\]/; + + if (anchor.match(re)) + { + var num = parseInt(anchor.substring(1, anchor.length-1)); + + if (num > this.slides.length) + num = 1; + + if (--num < 0) + num = 0; + + return num; + } + + // oh dear unknown anchor + return 0; + } + + // search for enclosing slide + + while (true) + { + // browser coerces html elements to uppercase! + if (target.nodeName.toLowerCase() == "div" && + this.has_class(target, "slide")) + { + // found the slide element + break; + } + + // otherwise try parent element if any + + target = target.parentNode; + + if (!target) + { + return 0; // no luck! + } + }; + + for (i = 0; i < slides.length; ++i) + { + if (slides[i] == target) + return i; // success + } + + // oh dear still no luck + return 0; + }, + + previous_slide: function (incremental) { + if (!w3c_slidy.view_all) + { + var slide; + + if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null) + { + w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown); + w3c_slidy.set_eos_status(false); + } + else if (w3c_slidy.slide_number > 0) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = w3c_slidy.slide_number - 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + w3c_slidy.set_eos_status(true); + w3c_slidy.show_slide(slide); + } + + w3c_slidy.set_location(); + + if (!w3c_slidy.ns_pos) + w3c_slidy.refresh_toolbar(200); + } + }, + + next_slide: function (incremental) { + if (!w3c_slidy.view_all) + { + var slide, last = w3c_slidy.last_shown; + + if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1) + w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown); + + if ((!incremental || w3c_slidy.last_shown == null) && + w3c_slidy.slide_number < w3c_slidy.slides.length - 1) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = w3c_slidy.slide_number + 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.show_slide(slide); + } + else if (!w3c_slidy.last_shown) + { + if (last && incremental) + w3c_slidy.last_shown = last; + } + + w3c_slidy.set_location(); + + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + + if (!w3c_slidy.ns_pos) + w3c_slidy.refresh_toolbar(200); + } + }, + + // to first slide with nothing revealed + // i.e. state at start of presentation + first_slide: function () { + if (!w3c_slidy.view_all) + { + var slide; + + if (w3c_slidy.slide_number != 0) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = 0; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.show_slide(slide); + } + + w3c_slidy.set_eos_status( + !w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + w3c_slidy.set_location(); + } + }, + + // goto last slide with everything revealed + // i.e. state at end of presentation + last_slide: function () { + if (!w3c_slidy.view_all) + { + var slide; + + w3c_slidy.last_shown = null; //revealNextItem(lastShown); + + if (w3c_slidy.last_shown == null && + w3c_slidy.slide_number < w3c_slidy.slides.length - 1) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = w3c_slidy.slides.length - 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + + w3c_slidy.show_slide(slide); + } + else + { + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + } + + w3c_slidy.set_eos_status(true); + w3c_slidy.set_location(); + } + }, + + + // ### check this and consider add/remove class + set_eos_status: function (state) { + if (this.eos) + this.eos.style.color = (state ? "rgb(240,240,240)" : "red"); + }, + + // first slide is 0 + goto_slide: function (num) { + //alert("going to slide " + (num+1)); + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = num; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")"; + w3c_slidy.show_slide(slide); + w3c_slidy.show_slide_number(); + }, + + + show_slide: function (slide) { + this.sync_background(slide); + this.remove_class(slide, "hidden"); + + // work around IE9 object rendering bug + setTimeout("window.scrollTo(0,0);", 1); + }, + + hide_slide: function (slide) { + this.add_class(slide, "hidden"); + }, + + set_focus: function (element) + { + if (element) + element.focus(); + else + { + w3c_slidy.help_anchor.focus(); + + setTimeout(function() { + w3c_slidy.help_anchor.blur(); + }, 1); + } + }, + + // show just the backgrounds pertinent to this slide + // when slide background-color is transparent + // this should now work with rgba color values + sync_background: function (slide) { + var background; + var bgColor; + + if (slide.currentStyle) + bgColor = slide.currentStyle["backgroundColor"]; + else if (document.defaultView) + { + var styles = document.defaultView.getComputedStyle(slide,null); + + if (styles) + bgColor = styles.getPropertyValue("background-color"); + else // broken implementation probably due Safari or Konqueror + { + //alert("defective implementation of getComputedStyle()"); + bgColor = "transparent"; + } + } + else + bgColor == "transparent"; + + if (bgColor == "transparent" || + bgColor.indexOf("rgba") >= 0 || + bgColor.indexOf("opacity") >= 0) + { + var slideClass = this.get_class_list(slide); + + for (var i = 0; i < this.backgrounds.length; i++) + { + background = this.backgrounds[i]; + + var bgClass = this.get_class_list(background); + + if (this.matching_background(slideClass, bgClass)) + this.remove_class(background, "hidden"); + else + this.add_class(background, "hidden"); + } + } + else // forcibly hide all backgrounds + this.hide_backgrounds(); + }, + + hide_backgrounds: function () { + for (var i = 0; i < this.backgrounds.length; i++) + { + background = this.backgrounds[i]; + this.add_class(background, "hidden"); + } + }, + + // compare classes for slide and background + matching_background: function (slideClass, bgClass) { + var i, count, pattern, result; + + // define pattern as regular expression + pattern = /\w+/g; + + // check background class names + result = bgClass.match(pattern); + + for (i = count = 0; i < result.length; i++) + { + if (result[i] == "hidden") + continue; + + if (result[i] == "background") + continue; + + ++count; + } + + if (count == 0) // default match + return true; + + // check for matches and place result in array + result = slideClass.match(pattern); + + // now check if desired name is present for background + for (i = count = 0; i < result.length; i++) + { + if (result[i] == "hidden") + continue; + + if (this.has_token(bgClass, result[i])) + return true; + } + + return false; + }, + + resized: function () { + var width = 0; + + if ( typeof( window.innerWidth ) == 'number' ) + width = window.innerWidth; // Non IE browser + else if (document.documentElement && document.documentElement.clientWidth) + width = document.documentElement.clientWidth; // IE6 + else if (document.body && document.body.clientWidth) + width = document.body.clientWidth; // IE4 + + var height = 0; + + if ( typeof( window.innerHeight ) == 'number' ) + height = window.innerHeight; // Non IE browser + else if (document.documentElement && document.documentElement.clientHeight) + height = document.documentElement.clientHeight; // IE6 + else if (document.body && document.body.clientHeight) + height = document.body.clientHeight; // IE4 + + if (height && (width/height > 1.05*1024/768)) + { + width = height * 1024.0/768; + } + + // IE fires onresize even when only font size is changed! + // so we do a check to avoid blocking < and > actions + if (width != w3c_slidy.last_width || height != w3c_slidy.last_height) + { + if (width >= 1100) + w3c_slidy.size_index = 5; // 4 + else if (width >= 1000) + w3c_slidy.size_index = 4; // 3 + else if (width >= 800) + w3c_slidy.size_index = 3; // 2 + else if (width >= 600) + w3c_slidy.size_index = 2; // 1 + else if (width) + w3c_slidy.size_index = 0; + + // add in font size adjustment from meta element e.g. + // + // useful when slides have too much content ;-) + + if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment && + w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length) + w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment; + + // enables cross browser use of relative width/height + // on object elements for use with SVG and Flash media + w3c_slidy.adjust_object_dimensions(width, height); + + if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index]) + { + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + } + + w3c_slidy.last_width = width; + w3c_slidy.last_height = height; + + // force reflow to work around Mozilla bug + if (w3c_slidy.ns_pos) + { + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + } + + // force correct positioning of toolbar + w3c_slidy.refresh_toolbar(200); + } + }, + + scrolled: function () { + if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7) + { + w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset(); + // hide toolbar + w3c_slidy.toolbar.style.display = "none"; + + // make it reappear later + if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all) + { + setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000); + w3c_slidy.scrollhack = 1; + } + } + }, + + hide_toolbar: function () { + w3c_slidy.add_class(w3c_slidy.toolbar, "hidden"); + window.focus(); + }, + + // used to ensure IE refreshes toolbar in correct position + refresh_toolbar: function (interval) { + if (!w3c_slidy.ns_pos && !w3c_slidy.ie7) + { + w3c_slidy.hide_toolbar(); + setTimeout(function () {w3c_slidy.show_toolbar();}, interval); + } + }, + + // restores toolbar after short delay + show_toolbar: function () { + if (w3c_slidy.want_toolbar) + { + w3c_slidy.toolbar.style.display = "block"; + + if (!w3c_slidy.ns_pos) + { + // adjust position to allow for scrolling + var xoffset = w3c_slidy.scroll_x_offset(); + w3c_slidy.toolbar.style.left = xoffset; + w3c_slidy.toolbar.style.right = xoffset; + + // determine vertical scroll offset + //var yoffset = scrollYOffset(); + + // bottom is doc height - window height - scroll offset + //var bottom = documentHeight() - lastHeight - yoffset + + //if (yoffset > 0 || documentHeight() > lastHeight) + // bottom += 16; // allow for height of scrollbar + + w3c_slidy.toolbar.style.bottom = 0; //bottom; + } + + w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden"); + } + + w3c_slidy.scrollhack = 0; + + + // set the keyboard focus to the help link on the + // toolbar to ensure that document has the focus + // IE doesn't always work with window.focus() + // and this hack has benefit of Enter for help + + try + { + if (!w3c_slidy.opera) + w3c_slidy.set_focus(); + } + catch (e) + { + } + }, + +// invoked via F key + toggle_toolbar: function () { + if (!w3c_slidy.view_all) + { + if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden")) + { + w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden") + w3c_slidy.want_toolbar = 1; + } + else + { + w3c_slidy.add_class(w3c_slidy.toolbar, "hidden") + w3c_slidy.want_toolbar = 0; + } + } + }, + + scroll_x_offset: function () { + if (window.pageXOffset) + return self.pageXOffset; + + if (document.documentElement && + document.documentElement.scrollLeft) + return document.documentElement.scrollLeft; + + if (document.body) + return document.body.scrollLeft; + + return 0; + }, + + scroll_y_offset: function () { + if (window.pageYOffset) + return self.pageYOffset; + + if (document.documentElement && + document.documentElement.scrollTop) + return document.documentElement.scrollTop; + + if (document.body) + return document.body.scrollTop; + + return 0; + }, + + // looking for a way to determine height of slide content + // the slide itself is set to the height of the window + optimize_font_size: function () { + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + //var dh = documentHeight(); //getDocHeight(document); + var dh = slide.scrollHeight; + var wh = getWindowHeight(); + var u = 100 * dh / wh; + + alert("window utilization = " + u + "% (doc " + + dh + " win " + wh + ")"); + }, + + // from document object + get_doc_height: function (doc) { + if (!doc) + doc = document; + + if (doc && doc.body && doc.body.offsetHeight) + return doc.body.offsetHeight; // ns/gecko syntax + + if (doc && doc.body && doc.body.scrollHeight) + return doc.body.scrollHeight; + + alert("couldn't determine document height"); + }, + + get_window_height: function () { + if ( typeof( window.innerHeight ) == 'number' ) + return window.innerHeight; // Non IE browser + + if (document.documentElement && document.documentElement.clientHeight) + return document.documentElement.clientHeight; // IE6 + + if (document.body && document.body.clientHeight) + return document.body.clientHeight; // IE4 + }, + + document_height: function () { + var sh, oh; + + sh = document.body.scrollHeight; + oh = document.body.offsetHeight; + + if (sh && oh) + { + return (sh > oh ? sh : oh); + } + + // no idea! + return 0; + }, + + smaller: function () { + if (w3c_slidy.size_index > 0) + { + --w3c_slidy.size_index; + } + + w3c_slidy.toolbar.style.display = "none"; + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + setTimeout(function () {w3c_slidy.show_toolbar(); }, 50); + }, + + bigger: function () { + if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1) + { + ++w3c_slidy.size_index; + } + + w3c_slidy.toolbar.style.display = "none"; + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + setTimeout(function () {w3c_slidy.show_toolbar(); }, 50); + }, + + // enables cross browser use of relative width/height + // on object elements for use with SVG and Flash media + // with thanks to Ivan Herman for the suggestion + adjust_object_dimensions: function (width, height) { + for( var i = 0; i < w3c_slidy.objects.length; i++ ) + { + var obj = this.objects[i]; + var mimeType = obj.getAttribute("type"); + + if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash") + { + if ( !obj.initialWidth ) + obj.initialWidth = obj.getAttribute("width"); + + if ( !obj.initialHeight ) + obj.initialHeight = obj.getAttribute("height"); + + if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" ) + { + var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1)); + var newW = width * (w/100.0); + obj.setAttribute("width",newW); + } + + if ( obj.initialHeight && + obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" ) + { + var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1)); + var newH = height * (h/100.0); + obj.setAttribute("height", newH); + } + } + } + }, + + // needed for Opera to inhibit default behavior + // since Opera delivers keyPress even if keyDown + // was cancelled + key_press: function (event) { + if (!event) + event = window.event; + + if (!w3c_slidy.key_wanted) + return w3c_slidy.cancel(event); + + return true; + }, + + // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes + key_down: function (event) { + var key, target, tag; + + w3c_slidy.key_wanted = true; + + if (!event) + event = window.event; + + // kludge around NS/IE differences + if (window.event) + { + key = window.event.keyCode; + target = window.event.srcElement; + } + else if (event.which) + { + key = event.which; + target = event.target; + } + else + return true; // Yikes! unknown browser + + // ignore event if key value is zero + // as for alt on Opera and Konqueror + if (!key) + return true; + + // avoid interfering with keystroke + // behavior for non-slidy chrome elements + if (!w3c_slidy.slidy_chrome(target) && + w3c_slidy.special_element(target)) + return true; + + // check for concurrent control/command/alt key + // but are these only present on mouse events? + + if (event.ctrlKey || event.altKey || event.metaKey) + return true; + + // dismiss table of contents if visible + if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40) + { + w3c_slidy.hide_table_of_contents(true); + + if (key == 27 || key == 84 || key == 67) + return w3c_slidy.cancel(event); + } + + if (key == 34) // Page Down + { + if (w3c_slidy.view_all) + return true; + + w3c_slidy.next_slide(false); + return w3c_slidy.cancel(event); + } + else if (key == 33) // Page Up + { + if (w3c_slidy.view_all) + return true; + + w3c_slidy.previous_slide(false); + return w3c_slidy.cancel(event); + } + else if (key == 32) // space bar + { + w3c_slidy.next_slide(true); + return w3c_slidy.cancel(event); + } + else if (key == 37) // Left arrow + { + w3c_slidy.previous_slide(!event.shiftKey); + return w3c_slidy.cancel(event); + } + else if (key == 36) // Home + { + w3c_slidy.first_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 35) // End + { + w3c_slidy.last_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 39) // Right arrow + { + w3c_slidy.next_slide(!event.shiftKey); + return w3c_slidy.cancel(event); + } + else if (key == 13) // Enter + { + if (w3c_slidy.outline) + { + if (w3c_slidy.outline.visible) + w3c_slidy.fold(w3c_slidy.outline); + else + w3c_slidy.unfold(w3c_slidy.outline); + + return w3c_slidy.cancel(event); + } + } + else if (key == 188) // < for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 190) // > for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 189 || key == 109) // - for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 187 || key == 191 || key == 107) // = + for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 83) // S for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 66) // B for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 90) // Z for last slide + { + w3c_slidy.last_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 70) // F for toggle toolbar + { + w3c_slidy.toggle_toolbar(); + return w3c_slidy.cancel(event); + } + else if (key == 65) // A for toggle view single/all slides + { + w3c_slidy.toggle_view(); + return w3c_slidy.cancel(event); + } + else if (key == 75) // toggle action of left click for next page + { + w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled; + var alert_msg = (w3c_slidy.mouse_click_enabled ? + "enabled" : "disabled") + " mouse click advance"; + + alert(w3c_slidy.localize(alert_msg)); + return w3c_slidy.cancel(event); + } + else if (key == 84 || key == 67) // T or C for table of contents + { + if (w3c_slidy.toc) + w3c_slidy.toggle_table_of_contents(); + + return w3c_slidy.cancel(event); + } + else if (key == 72) // H for help + { + window.location = w3c_slidy.help_page; + return w3c_slidy.cancel(event); + } + //else alert("key code is "+ key); + + return true; + }, + + // safe for both text/html and application/xhtml+xml + create_element: function (name) { + if (this.xhtml && (typeof document.createElementNS != 'undefined')) + return document.createElementNS("http://www.w3.org/1999/xhtml", name) + + return document.createElement(name); + }, + + get_element_style: function (elem, IEStyleProp, CSSStyleProp) { + if (elem.currentStyle) + { + return elem.currentStyle[IEStyleProp]; + } + else if (window.getComputedStyle) + { + var compStyle = window.getComputedStyle(elem, ""); + return compStyle.getPropertyValue(CSSStyleProp); + } + return ""; + }, + + // the string str is a whitespace separated list of tokens + // test if str contains a particular token, e.g. "slide" + has_token: function (str, token) { + if (str) + { + // define pattern as regular expression + var pattern = /\w+/g; + + // check for matches + // place result in array + var result = str.match(pattern); + + // now check if desired token is present + for (var i = 0; i < result.length; i++) + { + if (result[i] == token) + return true; + } + } + + return false; + }, + + get_class_list: function (element) { + if (typeof element.className != 'undefined') + return element.className; + + return element.getAttribute("class"); + }, + + has_class: function (element, name) { + if (element.nodeType != 1) + return false; + + var regexp = new RegExp("(^| )" + name + "\W*"); + + if (typeof element.className != 'undefined') + return regexp.test(element.className); + + return regexp.test(element.getAttribute("class")); + }, + + remove_class: function (element, name) { + var regexp = new RegExp("(^| )" + name + "\W*"); + var clsval = ""; + + if (typeof element.className != 'undefined') + { + clsval = element.className; + + if (clsval) + { + clsval = clsval.replace(regexp, ""); + element.className = clsval; + } + } + else + { + clsval = element.getAttribute("class"); + + if (clsval) + { + clsval = clsval.replace(regexp, ""); + element.setAttribute("class", clsval); + } + } + }, + + add_class: function (element, name) { + if (!this.has_class(element, name)) + { + if (typeof element.className != 'undefined') + element.className += " " + name; + else + { + var clsval = element.getAttribute("class"); + clsval = clsval ? clsval + " " + name : name; + element.setAttribute("class", clsval); + } + } + }, + + // HTML elements that can be used with class="incremental" + // note that you can also put the class on containers like + // up, ol, dl, and div to make their contents appear + // incrementally. Upper case is used since this is what + // browsers report for HTML node names (text/html). + incremental_elements: null, + okay_for_incremental: function (name) { + if (!this.incremental_elements) + { + var inclist = new Array(); + inclist["p"] = true; + inclist["pre"] = true; + inclist["li"] = true; + inclist["blockquote"] = true; + inclist["dt"] = true; + inclist["dd"] = true; + inclist["h2"] = true; + inclist["h3"] = true; + inclist["h4"] = true; + inclist["h5"] = true; + inclist["h6"] = true; + inclist["span"] = true; + inclist["address"] = true; + inclist["table"] = true; + inclist["tr"] = true; + inclist["th"] = true; + inclist["td"] = true; + inclist["img"] = true; + inclist["object"] = true; + this.incremental_elements = inclist; + } + return this.incremental_elements[name.toLowerCase()]; + }, + + next_incremental_item: function (node) { + var br = this.is_xhtml ? "br" : "BR"; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + for (;;) + { + node = w3c_slidy.next_node(slide, node); + + if (node == null || node.parentNode == null) + break; + + if (node.nodeType == 1) // ELEMENT + { + if (node.nodeName == br) + continue; + + if (w3c_slidy.has_class(node, "incremental") + && w3c_slidy.okay_for_incremental(node.nodeName)) + return node; + + if (w3c_slidy.has_class(node.parentNode, "incremental") + && !w3c_slidy.has_class(node, "non-incremental")) + return node; + } + } + + return node; + }, + + previous_incremental_item: function (node) { + var br = this.is_xhtml ? "br" : "BR"; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + for (;;) + { + node = w3c_slidy.previous_node(slide, node); + + if (node == null || node.parentNode == null) + break; + + if (node.nodeType == 1) + { + if (node.nodeName == br) + continue; + + if (w3c_slidy.has_class(node, "incremental") + && w3c_slidy.okay_for_incremental(node.nodeName)) + return node; + + if (w3c_slidy.has_class(node.parentNode, "incremental") + && !w3c_slidy.has_class(node, "non-incremental")) + return node; + } + } + + return node; + }, + + // set visibility for all elements on current slide with + // a parent element with attribute class="incremental" + set_visibility_all_incremental: function (value) { + var node = this.next_incremental_item(null); + + if (value == "hidden") + { + while (node) + { + w3c_slidy.add_class(node, "invisible"); + node = w3c_slidy.next_incremental_item(node); + } + } + else // value == "visible" + { + while (node) + { + w3c_slidy.remove_class(node, "invisible"); + node = w3c_slidy.next_incremental_item(node); + } + } + }, + + // reveal the next hidden item on the slide + // node is null or the node that was last revealed + reveal_next_item: function (node) { + node = w3c_slidy.next_incremental_item(node); + + if (node && node.nodeType == 1) // an element + w3c_slidy.remove_class(node, "invisible"); + + return node; + }, + + // exact inverse of revealNextItem(node) + hide_previous_item: function (node) { + if (node && node.nodeType == 1) // an element + w3c_slidy.add_class(node, "invisible"); + + return this.previous_incremental_item(node); + }, + + // left to right traversal of root's content + next_node: function (root, node) { + if (node == null) + return root.firstChild; + + if (node.firstChild) + return node.firstChild; + + if (node.nextSibling) + return node.nextSibling; + + for (;;) + { + node = node.parentNode; + + if (!node || node == root) + break; + + if (node && node.nextSibling) + return node.nextSibling; + } + + return null; + }, + + // right to left traversal of root's content + previous_node: function (root, node) { + if (node == null) + { + node = root.lastChild; + + if (node) + { + while (node.lastChild) + node = node.lastChild; + } + + return node; + } + + if (node.previousSibling) + { + node = node.previousSibling; + + while (node.lastChild) + node = node.lastChild; + + return node; + } + + if (node.parentNode != root) + return node.parentNode; + + return null; + }, + + previous_sibling_element: function (el) { + el = el.previousSibling; + + while (el && el.nodeType != 1) + el = el.previousSibling; + + return el; + }, + + next_sibling_element: function (el) { + el = el.nextSibling; + + while (el && el.nodeType != 1) + el = el.nextSibling; + + return el; + }, + + first_child_element: function (el) { + var node; + + for (node = el.firstChild; node; node = node.nextSibling) + { + if (node.nodeType == 1) + break; + } + + return node; + }, + + first_tag: function (element, tag) { + var node; + + if (!this.is_xhtml) + tag = tag.toUpperCase(); + + for (node = element.firstChild; node; node = node.nextSibling) + { + if (node.nodeType == 1 && node.nodeName == tag) + break; + } + + return node; + }, + + hide_selection: function () { + if (window.getSelection) // Firefox, Chromium, Safari, Opera + { + var selection = window.getSelection(); + + if (selection.rangeCount > 0) + { + var range = selection.getRangeAt(0); + range.collapse (false); + } + } + else // Internet Explorer + { + var textRange = document.selection.createRange (); + textRange.collapse (false); + } + }, + + get_selected_text: function () { + try + { + if (window.getSelection) + return window.getSelection().toString(); + + if (document.getSelection) + return document.getSelection().toString(); + + if (document.selection) + return document.selection.createRange().text; + } + catch (e) + { + } + + return ""; + }, + + // make note of length of selected text + // as this evaluates to zero in click event + mouse_button_up: function (e) { + w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length; + }, + + mouse_button_down: function (e) { + w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length; + w3c_slidy.mouse_x = e.clientX; + w3c_slidy.mouse_y = e.clientY; + }, + + // right mouse button click is reserved for context menus + // it is more reliable to detect rightclick than leftclick + mouse_button_click: function (e) { + if (!e) + var e = window.event; + + if (Math.abs(e.clientX -w3c_slidy.mouse_x) + + Math.abs(e.clientY -w3c_slidy.mouse_y) > 10) + return true; + + if (w3c_slidy.selected_text_len > 0) + return true; + + var rightclick = false; + var leftclick = false; + var middleclick = false; + var target; + + if (!e) + var e = window.event; + + if (e.target) + target = e.target; + else if (e.srcElement) + target = e.srcElement; + + // work around Safari bug + if (target.nodeType == 3) + target = target.parentNode; + + if (e.which) // all browsers except IE + { + leftclick = (e.which == 1); + middleclick = (e.which == 2); + rightclick = (e.which == 3); + } + else if (e.button) + { + // Konqueror gives 1 for left, 4 for middle + // IE6 gives 0 for left and not 1 as I expected + + if (e.button == 4) + middleclick = true; + + // all browsers agree on 2 for right button + rightclick = (e.button == 2); + } + else + leftclick = true; + + if (w3c_slidy.selected_text_len > 0) + { + w3c_slidy.stop_propagation(e); + e.cancel = true; + e.returnValue = false; + return false; + } + + // dismiss table of contents + w3c_slidy.hide_table_of_contents(false); + + // check if target is something that probably want's clicks + // e.g. a, embed, object, input, textarea, select, option + var tag = target.nodeName.toLowerCase(); + + if (w3c_slidy.mouse_click_enabled && leftclick && + !w3c_slidy.special_element(target) && + !target.onclick) + { + w3c_slidy.next_slide(true); + w3c_slidy.stop_propagation(e); + e.cancel = true; + e.returnValue = false; + return false; + } + + return true; + }, + + special_element: function (element) { + if (this.has_class(element, "non-interactive")) + return false; + + var tag = element.nodeName.toLowerCase(); + + return element.onkeydown || + element.onclick || + tag == "a" || + tag == "embed" || + tag == "object" || + tag == "video" || + tag == "audio" || + tag == "svg" || + tag == "canvas" || + tag == "input" || + tag == "textarea" || + tag == "select" || + tag == "option"; + }, + + slidy_chrome: function (el) { + while (el) + { + if (el == w3c_slidy.toc || + el == w3c_slidy.toolbar || + w3c_slidy.has_class(el, "outline")) + return true; + + el = el.parentNode; + } + + return false; + }, + + get_key: function (e) + { + var key; + + // kludge around NS/IE differences + if (typeof window.event != "undefined") + key = window.event.keyCode; + else if (e.which) + key = e.which; + + return key; + }, + + get_target: function (e) { + var target; + + if (!e) + e = window.event; + + if (e.target) + target = e.target; + else if (e.srcElement) + target = e.srcElement; + + if (target.nodeType != 1) + target = target.parentNode; + + return target; + }, + + // does display property provide correct defaults? + is_block: function (elem) { + var tag = elem.nodeName.toLowerCase(); + + return tag == "ol" || tag == "ul" || tag == "p" || tag == "dl" || + tag == "li" || tag == "table" || tag == "pre" || + tag == "h1" || tag == "h2" || tag == "h3" || + tag == "h4" || tag == "h5" || tag == "h6" || + tag == "blockquote" || tag == "address"; + }, + + add_listener: function (element, event, handler) { + if (window.addEventListener) + element.addEventListener(event, handler, false); + else + element.attachEvent("on"+event, handler); + }, + + // used to prevent event propagation from field controls + stop_propagation: function (event) { + event = event ? event : window.event; + event.cancelBubble = true; // for IE + + if (event.stopPropagation) + event.stopPropagation(); + + return true; + }, + + cancel: function (event) { + if (event) + { + event.cancel = true; + event.returnValue = false; + + if (event.preventDefault) + event.preventDefault(); + } + + w3c_slidy.key_wanted = false; + return false; + }, + +// for each language define an associative array +// and also the help text which is longer + + strings_es: { + "slide":"pág.", + "help?":"Ayuda", + "contents?":"Índice", + "table of contents":"tabla de contenidos", + "Table of Contents":"Tabla de Contenidos", + "restart presentation":"Reiniciar presentación", + "restart?":"Inicio" + }, + help_es: + "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " + + "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.", + + strings_ca: { + "slide":"pàg..", + "help?":"Ajuda", + "contents?":"Índex", + "table of contents":"taula de continguts", + "Table of Contents":"Taula de Continguts", + "restart presentation":"Reiniciar presentació", + "restart?":"Inici" + }, + help_ca: + "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " + + "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.", + + strings_cs: { + "slide":"snímek", + "help?":"nápověda", + "contents?":"obsah", + "table of contents":"obsah prezentace", + "Table of Contents":"Obsah prezentace", + "restart presentation":"znovu spustit prezentaci", + "restart?":"restart" + }, + help_cs: + "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " + + "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " + + "dá zvětšit a zmenšit pomocí kláves B a S.", + + strings_nl: { + "slide":"pagina", + "help?":"Help?", + "contents?":"Inhoud?", + "table of contents":"inhoudsopgave", + "Table of Contents":"Inhoudsopgave", + "restart presentation":"herstart presentatie", + "restart?":"Herstart?" + }, + help_nl: + "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " + + "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.", + + strings_de: { + "slide":"Seite", + "help?":"Hilfe", + "contents?":"Übersicht", + "table of contents":"Inhaltsverzeichnis", + "Table of Contents":"Inhaltsverzeichnis", + "restart presentation":"Präsentation neu starten", + "restart?":"Neustart" + }, + help_de: + "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " + + "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.", + + strings_pl: { + "slide":"slajd", + "help?":"pomoc?", + "contents?":"spis treści?", + "table of contents":"spis treści", + "Table of Contents":"Spis Treści", + "restart presentation":"Restartuj prezentację", + "restart?":"restart?" + }, + help_pl: + "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" + + "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.", + + strings_fr: { + "slide":"page", + "help?":"Aide", + "contents?":"Index", + "table of contents":"table des matières", + "Table of Contents":"Table des matières", + "restart presentation":"Recommencer l'exposé", + "restart?":"Début" + }, + help_fr: + "Naviguez avec la souris, la barre d'espace, les flèches " + + "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " + + "les touches S et B pour modifier la taille de la police.", + + strings_hu: { + "slide":"oldal", + "help?":"segítség", + "contents?":"tartalom", + "table of contents":"tartalomjegyzék", + "Table of Contents":"Tartalomjegyzék", + "restart presentation":"bemutató újraindítása", + "restart?":"újraindítás" + }, + help_hu: + "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " + + "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " + + "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " + + "a szöveg méretét.", + + strings_it: { + "slide":"pag.", + "help?":"Aiuto", + "contents?":"Indice", + "table of contents":"indice", + "Table of Contents":"Indice", + "restart presentation":"Ricominciare la presentazione", + "restart?":"Inizio" + }, + help_it: + "Navigare con mouse, barra spazio, frecce sinistra/destra o " + + "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.", + + strings_el: { + "slide":"σελίδα", + "help?":"βοήθεια;", + "contents?":"περιεχόμενα;", + "table of contents":"πίνακας περιεχομένων", + "Table of Contents":"Πίνακας Περιεχομένων", + "restart presentation":"επανεκκίνηση παρουσίασης", + "restart?":"επανεκκίνηση;" + }, + help_el: + "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " + + "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " + + "το μέγεθος της γραμματοσειράς.", + + strings_ja: { + "slide":"スライド", + "help?":"ヘルプ", + "contents?":"目次", + "table of contents":"目次を表示", + "Table of Contents":"目次", + "restart presentation":"最初から再生", + "restart?":"最初から" + }, + help_ja: + "マウス左クリック ・ スペース ・ 左右キー " + + "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更", + + strings_zh: { + "slide":"幻灯片", + "help?":"帮助?", + "contents?":"内容?", + "table of contents":"目录", + "Table of Contents":"目录", + "restart presentation":"重新启动展示", + "restart?":"重新启动?" + }, + help_zh: + "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " + + "用 S, B 改变字体大小.", + + strings_ru: { + "slide":"слайд", + "help?":"помощь?", + "contents?":"содержание?", + "table of contents":"оглавление", + "Table of Contents":"Оглавление", + "restart presentation":"перезапустить презентацию", + "restart?":"перезапуск?" + }, + help_ru: + "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" + + "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.", + + strings_sv: { + "slide":"sida", + "help?":"hjälp", + "contents?":"innehåll", + "table of contents":"innehållsförteckning", + "Table of Contents":"Innehållsförteckning", + "restart presentation":"visa presentationen från början", + "restart?":"börja om" + }, + help_sv: + "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " + + "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " + + "Använd tangenterna S och B för att ändra textens storlek.", + + strings: { }, + + localize: function (src) { + if (src == "") + return src; + + // try full language code, e.g. en-US + var s, lookup = w3c_slidy.strings[w3c_slidy.lang]; + + if (lookup) + { + s = lookup[src]; + + if (s) + return s; + } + + // strip country code suffix, e.g. + // try en if undefined for en-US + var lg = w3c_slidy.lang.split("-"); + + if (lg.length > 1) + { + lookup = w3c_slidy.strings[lg[0]]; + + if (lookup) + { + s = lookup[src]; + + if (s) + return s; + } + } + + // otherwise string as is + return src; + }, + + init_localization: function () { + var i18n = w3c_slidy; + var help_text = w3c_slidy.help_text; + + // each such language array is declared in the localize array + // this is used as in w3c_slidy.localize("foo"); + this.strings = { + "es":this.strings_es, + "ca":this.strings_ca, + "cs":this.strings_cs, + "nl":this.strings_nl, + "de":this.strings_de, + "pl":this.strings_pl, + "fr":this.strings_fr, + "hu":this.strings_hu, + "it":this.strings_it, + "el":this.strings_el, + "jp":this.strings_ja, + "zh":this.strings_zh, + "ru":this.strings_ru, + "sv":this.strings_sv + }, + + i18n.strings_es[help_text] = i18n.help_es; + i18n.strings_ca[help_text] = i18n.help_ca; + i18n.strings_cs[help_text] = i18n.help_cs; + i18n.strings_nl[help_text] = i18n.help_nl; + i18n.strings_de[help_text] = i18n.help_de; + i18n.strings_pl[help_text] = i18n.help_pl; + i18n.strings_fr[help_text] = i18n.help_fr; + i18n.strings_hu[help_text] = i18n.help_hu; + i18n.strings_it[help_text] = i18n.help_it; + i18n.strings_el[help_text] = i18n.help_el; + i18n.strings_ja[help_text] = i18n.help_ja; + i18n.strings_zh[help_text] = i18n.help_zh; + i18n.strings_ru[help_text] = i18n.help_ru; + i18n.strings_sv[help_text] = i18n.help_sv; + + w3c_slidy.lang = document.body.parentNode.getAttribute("lang"); + + if (!w3c_slidy.lang) + w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang"); + + if (!w3c_slidy.lang) + w3c_slidy.lang = "en"; + } +}; + +// hack for back button behavior +if (w3c_slidy.ie6 || w3c_slidy.ie7) +{ + document.write(""); +} + +// attach event listeners for initialization +w3c_slidy.set_up(); + +// hide the slides as soon as body element is available +// to reduce annoying screen mess before the onload event +setTimeout(w3c_slidy.hide_slides, 50); \ No newline at end of file