slide_title("Maturity", '\n'.join([ "<b>~2015</b> Chrome Mac switch", '', "<b>2015Q3</b> HarfBuzz Hackfest at Mozilla London: USE", '', "<b>2015Q3</b> HarfBuzz 1.0.0", '', "<b>2015Q4</b> HarfBuzz Hackfest at Mozilla London: Unicode 8.0", '', "<b>2016Q2</b> HarfBuzz Hackfest at Mozilla London: Unicode 9.0", ])) slide_title("Future", '\n'.join([ "hb-ot-font", '', "OpenType MATH", '', "OpenType COLR/CPAL, SVG", '', "OpenType Variation Fonts (mutator?)", ])) #image_slide("pipeline.png", imgwidth=1900, imgheight=1000) slide_big("Q&A") if __name__ == "__main__": import slippy import harfbuzz10years_theme slippy.main (slides, harfbuzz10years_theme, args=['--geometry', '1920x1024'])
list_slide ([ "<b></b>", "• ", "• ", "• ", "• ", "• ", "• ", ], data={'align': pango.ALIGN_LEFT}) """ @slide def where_is_my_vote(r): r.set_source_rgb(0, .9, 0) r.paint() r.set_source_rgb(1, 1, 1) return "Where\nis\nMy Vote?" slide_noone("Q?") if __name__ == "__main__": import slippy import stateoftext_theme import sys #slippy.main (slides, stateoftext_theme) #slippy.main ("stateoftext_slides.py", "stateoftext_theme.py") slippy.main(slides, "stateoftext_theme.py") sys.exit(0)
"<b>Code: glyphy-demo</b>", "• ~2800 lines *.cc *.h", "• ~150 lines *.glsl", "• FreeType, GLUT", ], data={'align': pango.ALIGN_LEFT}) list_slide ([ "<b>More work</b>", "• Subpixel-rendering", "• Anisotropic-antialiasing", ], data={'align': pango.ALIGN_LEFT}) slide("<b>Gallery!</b>") for filename in file("gallery.txt").read().split('\n'): if not filename: continue def closure(filename): def slideFunc(r): glyphy_demo (r, filename) slideFunc.__name__ = filename return slideFunc slide(closure(filename)) @slide def GReal1(r): glyphy_demo (r, "q.png") if __name__ == "__main__": import slippy import glyphy_theme slippy.main (slides, glyphy_theme)
], data={'align': pango.ALIGN_LEFT}) slide_noone("What can <i>you</i>\ndo for GNOME?") slide("Testing") slide("Translation") slide("Usability") slide("Bug Fixing") slide("Development") slide("Web\nDevelopment") slide("Artistic\nContent") slide("Marketing") slide("Journalism") slide_noone("Why should you\njoin GNOME?") slide("Cool\nPeople") slide_image("berlin.jpg") slide("Helping\nPeople") slide("Recognition") slide("Satisfaction") slide("Living\nHappily") slide_noone("http://live.gnome.org/JoinGnome") if __name__ == "__main__": import slippy import turkey_theme import sys slippy.main(slides, turkey_theme) #slippy.main ("turkey_slides.py", "turkey_theme.py") sys.exit(0)
""" list_slide ([ "<b></b>", "• ", "• ", "• ", "• ", "• ", "• ", ], data={'align': pango.ALIGN_LEFT}) """ @slide def where_is_my_vote (r): r.set_source_rgb (0, .9, 0) r.paint () r.set_source_rgb (1, 1, 1) return "Where\nis\nMy Vote?" slide_noone("Q?") if __name__ == "__main__": import slippy import stateoftext_theme import sys #slippy.main (slides, stateoftext_theme) #slippy.main ("stateoftext_slides.py", "stateoftext_theme.py") slippy.main (slides, "stateoftext_theme.py") sys.exit (0)
list_slide (["PS", "<b>PDF</b>", "SVG"]) list_slide (["<b>Font subsetters</b>", "TrueType", "OpenType CFF", "Type1", "Type1 fallback", '<span foreground="#888">Type3</span>', ]) list_slide (["<b>New in 1.6</b>", 'Native gradients', 'Fine-grained fallback images', ]) list_slide (["<b>Planned for 1.8</b>", 'Improved text extraction', 'User-fonts', 'Metadata API', 'Reduced file size', 'JPEG support', ]) list_slide (["<b>Not Planned Yet</b>", 'Colorspace API', 'Higher-level integration', ]) slide ("Q?") if __name__ == "__main__": import slippy import cairoprinting_theme slippy.main (slides, cairoprinting_theme)
#!/usr/bin/python # -*- coding:utf8 -*- if __name__ == "__main__": import slippy import sys import harfbuzz_theme slippy.main(__file__, harfbuzz_theme, sys.argv[1:]) sys.exit(0) # Copyright 2007,2009 Behdad Esfahbod <*****@*****.**> # A slides file should populate the variable slides with # a list of tuples. Each tuple should have: # # - Slide content # - User data # - Canvas width # - Canvas height # # Slide content can be a string, a list of strings, # a function returning one of those, or a generator # yielding strings. The user data should be a dictionary or # None, and is both used to communicate options to the # renderer and to pass extra options to the theme functions. # # A function-based slide content will be passed a renderer object. # Renderer is an object similar to a cairo.Context and # pangocairo.CairoContext but has its own methods too. # The more useful of them here are put_text, put_image, and # set_allocation. See their pydocs.
#!/usr/bin/python # -*- coding:utf8 -*- if __name__ == "__main__": import slippy import sys import freetextstack_theme as theme slippy.main (__file__, theme, sys.argv[1:]) sys.exit (0) # Copyright 2007,2009 Behdad Esfahbod <*****@*****.**> # A slides file should populate the variable slides with # a list of tuples. Each tuple should have: # # - Slide content # - User data # - Canvas width # - Canvas height # # Slide content can be a string, a list of strings, # a function returning one of those, or a generator # yielding strings. The user data should be a dictionary or # None, and is both used to communicate options to the # renderer and to pass extra options to the theme functions. # # A function-based slide content will be passed a renderer object. # Renderer is an object similar to a cairo.Context and # pangocairo.CairoContext but has its own methods too. # The more useful of them here are put_text, put_image, and # set_allocation. See their pydocs.
slide_noone("What can <i>you</i>\ndo for GNOME?") slide("Testing") slide("Translation") slide("Usability") slide("Bug Fixing") slide("Development") slide("Web\nDevelopment") slide("Artistic\nContent") slide("Marketing") slide("Journalism") slide_noone("Why should you\njoin GNOME?") slide("Cool\nPeople") slide_image("berlin.jpg") slide("Helping\nPeople") slide("Recognition") slide("Satisfaction") slide("Living\nHappily") slide_noone("http://live.gnome.org/JoinGnome") if __name__ == "__main__": import slippy import turkey_theme import sys slippy.main (slides, turkey_theme) #slippy.main ("turkey_slides.py", "turkey_theme.py") sys.exit (0)
]) bullet_list_slide("Future work", [ "More font optimization", "Better input: .fea / UFO", "ttx2ufo", "Lint tool", "TrueType / CFF conversion", "Subsetting more tables", "Better merging", ]) bullet_list_slide("Future work: optimization", [ "Optimal packing: glyf flags / PUSH / etc", "CFF outline operation specializer", "CFF subroutinizer", "TrueType outline optimizer? (fontcrunch)", "TrueType bytecode analysis", "UPEM reduction", ]) slide("<b>Q?</b>", data={"desc":title_font}) python_slide('') python_slide(open("snippets/drop_glyphnames_cff.py").read()) xml_slide(open("snippets/tofu.ttx").read()) if __name__ == "__main__": import slippy import fonttools_theme slippy.main (slides, fonttools_theme, args=['--geometry', '1920x1200'])
#!/usr/bin/python # -*- coding:utf8 -*- if __name__ == "__main__": import slippy import sys import harfbuzz_theme slippy.main (__file__, harfbuzz_theme, sys.argv[1:]) sys.exit (0) # Copyright 2007,2009 Behdad Esfahbod <*****@*****.**> # A slides file should populate the variable slides with # a list of tuples. Each tuple should have: # # - Slide content # - User data # - Canvas width # - Canvas height # # Slide content can be a string, a list of strings, # a function returning one of those, or a generator # yielding strings. The user data should be a dictionary or # None, and is both used to communicate options to the # renderer and to pass extra options to the theme functions. # # A function-based slide content will be passed a renderer object. # Renderer is an object similar to a cairo.Context and # pangocairo.CairoContext but has its own methods too. # The more useful of them here are put_text, put_image, and # set_allocation. See their pydocs.
list_slide([ "<b>Cluster</b>", "• M input character", "• N output glyphs", "• M→N cluster" ], data={'align': pango.ALIGN_LEFT}) list_slide([ "• Cluster mapping", ], data={'align': pango.ALIGN_LEFT}) slide( 'Any good\nPDF generator\nshould take\ninput text,\noutput glyphs,\n<i>and</i>\ncluster mapping' ) slide_noone("What To Do\nWith Them?") slide("M→1") slide("M→0") slide("M→N") slide_noone("Issues") slide("0→1") slide("How to\nbreak?") slide("<i>Cursor</i>\npositions") slide("Run\norder") slide("Bidi") slide_noone('<span font_desc="Doulos SIL">~fin~</span>') if __name__ == "__main__": import slippy import textextraction_theme slippy.main(slides, textextraction_theme)
#!/usr/bin/python # -*- coding:utf8 -*- if __name__ == "__main__": import slippy import sys import freetextstack_theme as theme slippy.main(__file__, theme, sys.argv[1:]) sys.exit(0) # Copyright 2007,2009 Behdad Esfahbod <*****@*****.**> # A slides file should populate the variable slides with # a list of tuples. Each tuple should have: # # - Slide content # - User data # - Canvas width # - Canvas height # # Slide content can be a string, a list of strings, # a function returning one of those, or a generator # yielding strings. The user data should be a dictionary or # None, and is both used to communicate options to the # renderer and to pass extra options to the theme functions. # # A function-based slide content will be passed a renderer object. # Renderer is an object similar to a cairo.Context and # pangocairo.CairoContext but has its own methods too. # The more useful of them here are put_text, put_image, and # set_allocation. See their pydocs.
"OpenType CFF", "Type1", "Type1 fallback", '<span foreground="#888">Type3</span>', ]) list_slide([ "<b>New in 1.6</b>", 'Native gradients', 'Fine-grained fallback images', ]) list_slide([ "<b>Planned for 1.8</b>", 'Improved text extraction', 'User-fonts', 'Metadata API', 'Reduced file size', 'JPEG support', ]) list_slide([ "<b>Not Planned Yet</b>", 'Colorspace API', 'Higher-level integration', ]) slide("Q?") if __name__ == "__main__": import slippy import cairoprinting_theme slippy.main(slides, cairoprinting_theme)
@slide def git2(r): yield "Tiny commits" yield "\n\n<i>Earn points faster</i>" r.move_to(400, 300) r.put_image("apply-now.png", height=50) yield "" who(cworth) slide("Commit-access\nfor everyone!") who(behdad) slide("Tricking others\ninto doing <i>their</i> work") who(cworth) slide("Don't go AWOL") slide_noone("Why do we\nlove cairo?") slide_noone('Why do <span foreground="#c00"><i>you</i></span>\nlove cairo?') if __name__ == "__main__": import slippy import cairo_theme slippy.main(slides, cairo_theme)
#!/usr/bin/python def slide_add(f, data=None, width=800, height=600): if not data: data = {'who': -1} slides.append ((f, data, width, height)) return f slides = [] slide_add ("GTK+ Printing") slide_add ("History") slide_add ("Native dialogs\n on Win32 / OS X") slide_add ("App can add\n widgets / pages\n to dialog") slide_add ("App can ask\n for notification\n even after spooling") slide_add ("Cairo\n for rendering") slide_add ("On Unix,\n passthrough\n Postscript too") slide_add ('Backends:\nFile\nCUPS\nlpr\n<span foreground="gray">PAPI</span>') slide_add ("External\n application for\n preview by default\n (evince)") slide_add ("Async operation\n (not on Win32)\n Redo CUPS convenience API") slide_add ("That's\n mostly\n it!") if __name__ == "__main__": import slippy import gtkprinting_theme slippy.main (slides, gtkprinting_theme)
]) bullet_list_slide("Noto pipeline: TODO", [ "fontTools.varLib", "CFF operator specializer", "FDK hinter", ]) slide_title("", """ github.com/googlei18n/fontmake github.com/googlei18n/glyphsLib github.com/unified-font-object/ufoLib github.com/typesupply/defcon github.com/LettError/MutatorMath github.com/typesupply/fontMath github.com/googlei18n/ufo2ft github.com/typemytype/booleanOperations github.com/googlei18n/cu2qu github.com/googlei18n/compreffor github.com/behdad/fonttools github.com/googlei18n/noto-source www.freetype.org/ttfautohint/ """) slide_big("Q&A") if __name__ == "__main__": import slippy import fontpipeline_theme slippy.main (slides, fontpipeline_theme, args=['--geometry', '1920x1024'])
To set a good example he started to write a completely free operating system. Today Linux based GNU systems are used by millions of people around the world.""" import os, re lang = os.getenv ('LANG') i = lang.find ('_') if i > 0: lang = lang[:i] text = texts.get (lang, texts['en']) def break_on_dashlines (text): s = '' for line in text.split ('\n'): if re.match ('^----*$', line): yield s s = '' else: if s: s += '\n' s += line yield s for slide in break_on_dashlines (text): text_slide (slide) if __name__ == "__main__": import slippy import gnu_theme slippy.main (slides, gnu_theme, args = ['--slideshow', '--delay', '0.05', '--repeat'])
font-weight-min: 100; font-weight-max: 500; font-stretch-min: 70; font-stretch-max: 130; } """, "css") bullet_list_slide("Possibilities", [ "Justification", "Animation", "Grading", "Tickling", "...", ]) agenda('Demos') agenda('Discussion') bullet_list_slide("Links", [ "https://github.com/behdad/fonttools", "https://github.com/googlei18n/fontmake", "https://groups.google.com/forum/#!forum/fonttools", ]) slide("<b>Q?</b>", data={"desc":title_font}) if __name__ == "__main__": import slippy import opentypegx_theme slippy.main (slides, opentypegx_theme, args=['--geometry', '1920x1200'])