Planet Open Fonts

Understanding Fonts (Dave Crossland and friends)Liveblog Notes: Granshan 2015 Day 1

These are live blog notes from the lectures at the Granshan 2015 in Reading

Usual disclaimer for live blogging: These are informal notes taken by me, Dave Crossland, at the event, and may or may not be similar to what was said by the people who spoke on these topics. This is probably FULL of errors. What do you want for free? :) If something here is incorrect it is probably because I mistyped it or misunderstood, and if anyone wants corrections, just should tweet me – @davelab6 – or post a comment. Thanks!

Intro: Boris

15 years of MATD

Gerry

Great to see this happening. Its like a surfer movie, you stand on the board and you dont know if they will make it…. and now we are on the wave and I thin we are in for a nice ride but you dont know how it will go.

Why all of this? Well, there are so many people from around the world here today, and will a room like this, people who are making a living from type. 20 years ago people would not believe it. Global type is a business, and we are at the beginning. We have decades of growth in interest in global typogrpahy, not as a historical study, but a new domain that we – you – is helping to build. That combines understanding of culture, history, and a practical approach to discipline that can make new interesting designs. that treat the language, the script, of everyone with respect that they deserve.

These 3 will days will emphasise this. we are like mature teenagers, we are beginning to get there, and in the next few years the granshan will have a clear iddentity. its a nice thing to see poeple coming back to the university they studied at; if you have a strange feeling, its stranger for me.

its great to start the event with a legend, no better opening speaker; gerard unger.

Gerard Unger: Letterforms from the edge of Europe, 700–1200

Lets go to northern france, here was made in 871-877, a manuscript, the 2nd bible of charles de gaul. This it eh opening phase of the book of genesis. its in the biblioteque nationale, a prized possesoin of france. here is a detail from this page; LIBER. splinded capitals; identified as ture carolingian capitols. Nicolas Gray did this in ‘Lettering as Drawing, Contour as Soliouette’. This is modelled on classical roman caps, but changed enough to call them carolinian.

This is about calligraphy, epigraphy (carving) and digital letters. you see these letters in many manuscripts but few inscriptions. Kind C d G 2 was king of france, westerm roman empire, etc.

Now lets go to the abbey of or vey with a rare inscription with carolingian caps. its badly weathered, copper was inlaid and gone long ago. you see the curves in the G, D, the short serifs, the way the verticals flare; its all different to how the romans do it. this is around 840-844.

Back to this book, the caroligian miniscule, you see the page and the detail. when combined with the caroligian lowercase, there is the cap ‘N’ and an uncial ‘A’ and an uncial ‘q’ and ‘U’ and ‘O’. The franks were a germanic tribe, and charlemagne was a Frank, and CdG was a grandson.

As you go through the manuscript, at page 99, there is “The Book of Kings I”, “Liber Primo”. In the middle between the carolingian caps, there is another world! The letters are worked into a pattern, 1/3rd of them are symbols …

Uncials reached UK through missionaries; in the middle ages, people traveled widely and letters spread far. The uncials may be from greece or africa. A paleographer sugggested roman uncials are the work of a roman calligrapher working from greek uncial letterforms. this is from the coda cina inicas (?) and the uncial ‘a’ of the roman is familiar, the omega is flipped 180′ you have a roman ‘m’, so its supposed a direct lineage.

here are “english uncials” and what was made in the uk from them. this is caterbury from 750 AD, now in the royal library in stockholm. there are differences; the pen angle of roman is 30′ and in UK uncials its flat/horizontal, and a bit more ornate. Roman uncials are a bit more simple.

back to the 2nd bible of Charles de Gaul. … celts had their own art; here’s a celtic helmet from north france, now in the national archelogical museum in paris. its 4thC BC. Swirling lines, spirals, and snail shells, and interfaced cross hatching, and zoomorphic designer (eg snake heads). Here’s a vase, in the british museum, 3thC BC, more flat graphics but still spirals.

Here in the 2nd bible of CdG there are spirals, wheels, and geometric decoration in a famous manuscript. here is a 715-720AD bible from ireland, this is a treaure of the british library. in 563, st columba from ireland, founded a monastary in yeoman in the west coast of scotland. here’s another page of the linus van gospel (?) with this lettering; you see amazing creativity in solving problems that if i suggested them today to my clients they would refuse them.

here you see ‘abraham’ after a greek phi, and its split into 2 lines and fitted in an interwined way. there is a ‘G’ with the arm stem bend backwards. great stuff!

160 years later, this style was interpreted for these caps. in 1868 a hoard was found in ireland that had this chalice; it has text, an angular ‘h’ and a round uncial ‘e’.

Letterforms like an angular ‘s’ and diamond ‘o’ were influenced by runes and the ‘ogam’ (?) script. the o with a stem like a phi.

here is a stone from south east ireland with an ogam inscription; there is little known of this script.

So, this is showing how in the UK there is a mixture of roman square caps, uncials with round forms, and insular letterforms.

today designers also mix forms; when they do multiscript projects, they also look for elemnts scripts share; here is R S’s 2012 Sinhala + Latin. Similarly is 2013 by Bon Min, with Korean + Latin. There is Aaron Bell’s 2011 Latin + Korean. They found similar elements in both scripts, and the 2 have striking similarities, but lots of differences; because the korean script influences them similarly.

Ezcar was designed similarly, the Latin is angular reflecting the angularity of the devanagari.

This is Katari by erin mclaughlin, also very angular. not mixing scripts like mediavals did, but not far off.

ben jones, here today, designed a latin work with several scripts; amenian, gree, arabic, devanagari.

last, the angular ‘u’. something has gone wrong <img src=😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> look at the anuglar ‘u’ in my alvarata. it got gold in the EU design awards and i went to istanbul to pick up the prize. i was happy to see that the angular ‘u’ was known and used there too <img src=😉" class="wp-smiley" style="height: 1em; max-height: 1em;" />

Hrant: how do you get clients to use fonts like alvarata, that have a lot of variety? clients are too conservative.

GU: Sure, we educate them. you have to scare them 😉

Vaibhav Singh: Pictures of things: context in the time of global design

Gerry: Vaihbhav’s slides are notable as the images from from the authors collection. his eye for finding patterns when looking at material is great.

VS: Thanks, I’m happy to see so many familiar faces. The markets are growing, we have less and less time to become really interested in what we are doing. you assume a lot of ideas that educational frameowrks provide or professional practice provide. so its an intersting challenge to look at how challenges can be handeld.

I’m glad GU mentioned the movmebt of people. Its map morning! global practice today is not new. we see everything happening in many counties related to prining has been internaional. its never been an insular activity.

Printing press arrives in india in 1556, was meant to go from portugal to ethiopia, and political chagnes there meant they didnt. next was from denmark. danish missionairies had a base in south india, and the story goes they made type from the covers of cheese boxes. lots of innovations in a hands on manner. it became a base in the south east of india, and printed for multiple lanauges. not only for indian subcontentn, but china, tiben, even armenian. then from the UK, and then the french. the first english press was captured from the french. then USA missionaries in early 1800s in mumbai. they made new advances in type; they divded letters into parts to deal with large amounts of text – that was the US press and foundry.

So it was an international thing; it was not just people from the west, paper was from the middle east or china. in the 20th century, these motivations to develop new things changed. early 20th c, there is a surge in mechanical typesetting, faster production, and happened centered in mumbai, a capital crisis pushed newspaper owners to increase producitivity of print press workshops.

In the early 1920s, people in mumbai reached out to monotype uk to devleop something. there are layers of development, MT and LT produced a typeface, but that isn’t totally true, there is a layer of development, and the development process is more interesting than the type itself. a type is not a single thing, it mutates over time.

Similarly in NYC in the 30s, the Mergenthaler Linotype company took an interest to make a devananagri. their worked passed thorugh london to calcutta in 1933.

there was a collaborative effort at MIT, a hi tech company in cmabridge, and a guy in india, made a devanagari type. the commission to matthew carter, came from england, the processing in germany, the testing in india, and sent back to nyc.

the idea is that type is developed not only with formal steps, but as we see the world globally today, we are getting to in the practice of type design, its merely about putting things, making things look like each other; thats a basic idea you could be subject to. but this appraoch shows, what kind of context do we have, is this meaningful to the practice, or is it reinforcing ideas that may or may not be useful.

here is a popular dipiction of indian writing in a french trade card circa 1900. this has hyphens! the boards are huge. but this Jain poetry book from the British Library (‘banarasavilasa’) is totally different. the practice of writing is not serving the same purpose as other writing does; these are religious texts, the writer already knows the text, they know it; so its not really record keepings, it gives you a que when you need it. the text is memorised, so you come to it as a differnet kind of reader or writer.

the landscape format of the book is from the practice of using birch bark in the north and palm leaves in the south of india, and writing was shaped by these subsctrates. you get a metal stylus, you move the subsstrate – here, palm leaves – and when you have different materials/etchnology enter the domain, you see things evolve.

100 years later, you see in 1926, the tools are different; there is paper, a pen, a codex book. the codex form of the book changes according to its use. the things that appear as understanding of technoology, is interssting; there is a diffusion of tech, the more remote the place the longer it takes to get there. “the future is already here, but not evenly distributed.” so look at the actual use to tell you about the tech, the past and future practices.

here is an interesting use of a codex book, a udaipur street banker, 1926. if you have lists, the purpose of the text changes; a landscape book isnt sensible. here’s a late 19th C student manuscript, a long horizontal book, but the text is rotated.

so, an essense of cutlure is polytonic; its not that something works because its traditioanl. we also see this in designing typefacs. putting things into newer forms, or continuing traditions. older and newer ideas come togehter ot make osmething that may be better informed and more beneficial.

here is a diagram from the monotype salfords archive: adrian frutiger + mahendra patel “New Nagari” for the Univers Devanagri project. it has a specific form, looks at a pen sequence, then a low contrast version, a more simplified version… but a more complex letter would have a more radical transformation. you have to see letters in context; a letter out of context means nothing.

I dont say if this is good or bad, i say, does this appraoch take into account the context that this letter is going to be read. can this letter be deciphered? this is radical stuff in the top, there is a modularity to it, like early bauhaus attempts at universal type forms. there are directions here that could be explored further.

but designers say this is good/bad to follow. its not about that, there is possiblity to analyse information and make a more finer evaluaiton.

typefaces often have a political will behind them. there were script reform efforts, here the Sagariya Lipi. Here is Hari Govil with the 2nd Devangari Linotype machine, Mumbai 1933. Here is the LInotype devanagari v2, revised from the original design by him. This is something that people grew up with, so they become programmed to see these as The Way Thing Are, but not thinking if this is a good way or a bad way, given limitations of that time.

So how is type to evolve? A lof of type today, there is good type design happening but typography is not going anywhere. the people to use the type are not there. there is the tradiaional form that looks like this, and there isn’t much typographic exploration.

So, “Trade is a big influence in getting peopele to take an ineterst in one another… but so is the sheer pursuit of human curiosity.” – Amartya Sen (paraphrasing David Hume.)

Thanks!

Veronika Burian and José Scaglione: Curating a type library

Gerry: There is the difference between a type publisher and a foundry; a collection is formed with a vision, with type for specific uses. so i cornered these 2 to talk about this. about the global enviornment, where type designers now find themselves. they will tell us their secrets! :) vik and jose

v: its awkward to be back here 😉 12 years ago it was a different place :) so, an intro: this is the old Dept of Typography sign, that is bashed in, and this is a particular approach to type design, orientated to industrialism and utilitarianism. a focus on process and method. we were serioues, no grey hair and wearing all black (lol)

After that, we had this idea to partner in business, an experiment. we started in a collaborative typeface that became TT Carmina. Vik was in the UK and I was in Rosario Argentina. End of 2005, early 2006, the idea of long distance collaboration in type design wasnt spread like it is now. collaborative design was not widespread like it is now.

we had a shared interested in editorial design, book design.

j: so we made a method. this is an ‘a’ i made in amsterdam in 2004. vik grabbed it and said, it well, but if we do this on the bowl and the terminal. so i said, i love it, better, but it lost an essence, and it can have this terminal. and that led to a typeface.

v: its handy to have this other pair of eyes to bounce off each other. so, we had an idae for an indie foundry, there were a few around, but you cant open a shop with 1 typeface. so we saw to expand the library. we finished Jose’s reading type, Athelas, and mine – Maiola – was at FontShop in a 10 years contract. Ronnia. So we had this first website that was hideous

J: its my design 😉

v: its 10 years ago, its ok 😉 so we made this promo material and started as it goes. we did our own projects too but also realising that we have only 4 hands and 2 brains so we wanted to open up the library. so we asked our colleagues whose work we liked, like Cora by Bart Blubaugh, and the library took shape.

j: so we talk about the type busienss. how do you actually sell your stuff? there is a lot to be done to sell type. the comemrcialising of typeface has ebcome more complex recently. a lot of onts on offer. many media. the pricing structure varies a lot. its a complex scenario.

v: quickly, you see differne tdistribution models. foundries sell to a font rental system that distributes fonts. There is a cloud model too. pricing is key. you price to market standards; being too high means less sales, being too low means its not a good idea as it depreciates the market and conveys your work is lower quality. so pricing should be sustainable, to pay bills and be competitive at the same time.

j: here is a graph, 200 euro at the top. market price is say 100 euro. but a sustainable price, has development time costs, then the insertion costs of bringing it to market. it takes time too. you also must account for growth, so that the library and foundry can grow. and you need extra for a saftey net. as sometimes fonts fail to sell. you dont know exactly why. so how to manage a budget ir something we are not trained on. there are obvious things. rent an office, ;ay vendors, admin time, design time. but les sobvious costs; fianciail, taxes, services and supplies, hardware and software. taxes can add up. then, legal, distribution, support and advertising costs. every 3 or 4 years, someone will come along and say something like ‘you idiot that font is just like mine’ – this is hypothetical! :) – and you may need to consult a lawyer.

v: so you have retail, tailored, and hydrid fonts, going to desktop, web and OEM customers. We have so many licenses; high profile branding, merchandising, embedding (flash, pdf, ms word), broadcasting, server licenses – all for desktop. web: self hosting, rental, or perpetiual, etc etc.

j: so we educate users so they dont get lost.

v: our customers feel really lost, ‘wtf/ what do i need?’.

j: so you need to really clarify your license structure. you need to udnerstand your guide is NOT your EULA.

v: so educating users, you separate the good from the bad quality type (eg, dafont) you have opentype feature guides, and something that worked well for us is type in use showings; you give a customer before htey buy how it looks and can work. also pairing, people ask which fonts go together. not just a business levle, but also teaching the value of type, we do workshops to teach type.

j: 3, structuring your type library is a good idea. indep foundries have a possiblity to have closer contact to clients and strucutre the library properly. we mention some ideas, “a type library should…” which is our point of view but you can extrpaolte and have your ideas too.

j: point 1. collaborate with commercial efforts. the comemrcial world needs constant visual updates. we can sell font to the same company over and over. those editorial users need more expansive families, more challenging designs. they are constnatly updaitng the visual id, but also technology is always changing. and the editorial field requies text fonts, fonts engineered for continuous reading, and that sets the competitoin bar higher.

v: points 2, it should be part of company’s general character. there was an industrial approach inherited from Reading MATD. expanding to bloal markers is a challenge and intersting. it allows us longer periods, to plan projects.

j: this is our lase meeting, 5 people on skyep around the world.

v: you need to know the key players in your field.

j: when you see how is doing good stuff, you can target htem. FCE, is the most important book publisher in mexico; once they started using our type, we could show that, and its amazing that when a well known publisher or designer uses your font, they refer others to you. that helps exposure and media coverage.

v: you must balance personal and commercial interests. we try not to repeat outseles, to learn new technoogies, to do historial research. for me, things i picked up at MATD.

j: so, a library should be coherent. there is many advantages: you need a clear definiton of what the product is.

v: we sell type famlies, not single fonts. whereas say sudtipos sells single fonts targetting packaging so its quite different. that impacts the licensing model. pampatype has a different focus too.

j: the longer you are on the market, the more you can cover the whole area of your focus. planning helps, what you learn today you can reuse. you can set up your standards, even if you are a small foundry. house indistraues. if you have consistent high qulaity you have more loyality, you have customers returning to find more, you can build along term customer relatinoship.

v: how to keep it interesting, avoiding repetition? well, we have editorial design as the overall area. then newspapers, books, reference works, and magazines, are sub categories. if you over all, you can only cover each a little.

j: if you dig into books, there are novels, academics, poetry, comics, manuals; and so on. if you pick and choose, you end up with a library, you dont get a clear focus. if you say, fonts for screen, that can span the top 4 groups with a theme. or, if you design a large family that can have a cross sectional span across the top 4 areas. you dont want fonts in your library to compete, you want them to complement each other.

v: how to deal with trends? some libraries becomes bound to a period’s trends, like emigre in the 90s of the vintage/retro stuff popular lately. but the classics have a much longer period of market insertion. also multiscript work with more glyphs is a longer process.

Creating a library conept, licensing scheme, a pricing model, communciations mode – all key to making a brand.

setting high quality standards, aid education efforts, …. , are key to building a company.

v: Real possibilities in other markets? its a question of econmic viability.

j: we started in 2006, we started with pan euro character sets. this helped us a lot as back then there were very few text fonts that carried these accents. you look at a map, how much of the globe uses latin? there is a LOT, but many areas are not well covered. Where are there foundries? Where are there not?

v: the economic centers are changing. its a matter of time. why expand to foreign scripts? new challaneges. personal, and commercial. typography can make an impact, a positive difference there. there is a lack of text types, with wegihts and styles. there is undersrved needs. so, there are may be 3 areas; self initiatved, semi initiated and fully paid projects. we started adelle cyrillic with this sketch, and we used consutlants to help us with that. there is a new generation of new type designers in these regions. there is demand for new quality. the wild days of copyright infringement are sort of retreating. here is a self initiated devanagari done at TDi, and this is still not done 😉

j: potential problems? its more expensiv.e you hve to leanr stuff, hire people to consult, post production. the key issue is, how do we sell it? we might need help how to sell these properly.

v: sometimes it can work; you need a client starting to initate a project and can continue with the fund from that initial work.

j: work on the edges, its okay to work where you dont know what will happen. this is our bree, designed as a corporate font, they can use it in a new way, like in a newspaper. an arty newspaper sure, but they find a new way to use it. this type was made for luxury printed books, to get away from swuareness of pixels, but it was licensed for apple ibooks as people saw it then worked on retina screens as well. so we can not predict the destination of our fonts. Iskra by Tom Grace (who is here) is thought to be a display type, but it works perfeclty nicely for immersive reading! and Alverata also pushes the limits.

Thanks!

Q: Are you happier to work on client commissioned work where the finance is clear? or self initiated work?

v: its a shot in the dark. and you learn things in commissioned work, but its narrowly scoped by the clients needs. the client can vary; you can have great ones who let you do your thing… if you do your own work, you are more free.

gerry: so vik just said, you can do what you want. Jo was the first MATD graduate to do a PhD, and there is now over a dozen matd gradutes who have or are in the process of completing one. 15 years ago people might think there may not be enough space for such high level research in this aera. these 2 talks go togther in a way, but v + j talk about an established market, people publishging ebook and magazines and so on. But JO is talking about another world. designing type for scripts withotua ny libraries out there. in 10 years there might be a talk about editorial design in the scripts Jo is presenting now. a prophetic talk.

Jo: so, this is a self initiated project following up my PhD on the mongolian script. Sherpa; the writing systems of the himalayas. there are minority scripts. another map! here we are.

Lantsa is a script, when I did my field trips to look at tibetian and mongolian writing systems. it was used by buddhists and went with the culture through india and chian to japan. this lantsa/ranjana writing system has been studied before. earlier academics and lingusists docimented it. explorers in 1828 made plates and documetnation of the script, in their early writings. this is Hodgeson’s “Notices of the languages, literature and religion of the bauddhas of Nepal and Bhot” (sp, Bhutan.)

Ranjana is from Nepal in the same period. The north indian gupta brahmi script is the ancestor script. those writing sstems have not been produced as printing types; the challenege is what aer we looking for, which models are good, and how to translate them into a digital font. it occured not earlier thant he 11th centiry.

in 1834, Csoma de Koross “Grammar of the Tibetan language” has plates 38 and 39 with teh grammar of the langauge and these plates have a complete syllabory. i use the word lantsa for both, as the literature also focuses on it.

in 1888, sarat chandra das argues that the lantsha characters in tibet occured during hte 2nd and 4th period of the grammat reformation of the tibetian script. he also gives a good voerview of the syllabary; the 36 consonants that are combined with vowelrs and each other, so the glyphs set becomes very large.

end of day 1

Caolán McNamaraRHEL 6.7 upgrades LibreOffice from 4.0.4.2 to 4.2.8.2

The freshly announced RHEL 6.7 upgrades LibreOffice from 4.0.4.2 to 4.2.8.2. RHEL 7.2 will upgrade from 4.2.6.3 to 4.3.7.2. Fedora 23 will have 5.0.0 in it.

Caolán McNamaraLibreOffice on wayland

Hacked LibreOffice a bit more today towards wayland support via the gtk3 vclplug. Good news is that it launches, displays and you can interact with it mostly as expected.

Under F22 with a gnome-on-wayland session, GDK_BACKEND=wayland ./soffice.bin gives me...


Which is encouraging as this morning I had no window contents at all. Downside is that I can't resize the window and the menubar is displayed behind the title bar. Maybe a client side decoration issue.

Ben MartinOSX Bundling Soprano and other joys

Libferris has been moving to use more Qt/KDE technologies over the years. Ferris is also a fairly substantial software project in it's own right, with many plugins and support for multiple libraries. Years back I moved from using raw redland to using soprano for RDF handling in libferris.

Over recent months, from time to time, I've been working on an OSX bundle for libferris. The idea is to make installation as simple as copying Ferris.app to /Applications. I've done some OSX packaging before, so I've been exposed to the whole library paths inside dylib stuff, and also the freedesktop specs expecting things in /etc or whatever and you really want it to look into /Applications/YouApp/Contents/Resources/.../etc/whatever.

The silver test for packaging is to rename the area that is used to build the source to something unexpected and see if you can still run the tools. The Gold test is obviously to install from the app.dmz onto a fresh machine and see that it runs.

I discovered a few gotchas during silver testing and soprano usage. If you get things half right then you can get to a state that allows the application to run but that does not allow a redland RDF model to ever be created. If your application assumes that it can always create an in memory RDF store, a fairly secure bet really, then bad things will befall the app bundle on osx.

Plugins are found by searching for the desktop files first and then loading the shared libary plugin as needed. The desktop files can be found with the first line below, while the second line allows the plugin shared libraries to be found and loaded.

export SOPRANO_DIRS=/Applications/Ferris.app/Contents/Resources/usr/share
export LD_LIBRARY_PATH=/Applications/Ferris.app/Contents/Resources/usr/local/lib/soprano/

You have to jump through a few more hoops. You'll find that the plugin ./lib/soprano/libsoprano_redlandbackend.so links to lib/librdf.0.dylib and librdf will link to other redland libraries which themselves link to things like libxml2 which you might not have bundled yet.

There are also many cases of things linking to QtCore and other Qt libraries. These links are normally to nested paths like Library/Frameworks/QtCore.framework/Versions/4/QtCore which will not pass the silver test. Actually, links inside dylibs like that tend to cause the show to segv and you are left to work out where and why that happened. My roll by hand solution is to create softlinks to these libraries like QtCore in the .../lib directory and then resolve the dylib links to these softlinks.

In the end I'd also like to make an app bundle for specific KDE apps. Just being able to install okular by drag and drop would be very handy. It is my preferred reader for PDF files and having a binary that doesn't depend on a build environment (homebrew or macports) makes it simpler to ensure I can always have okular even when using an osx machine.


Ben MartinTerry && EL

After getting headlights Terry now has a lighted arm. This is using the 3 meter EL wire and a 2xAA battery inverter to drive it. The around $20 entry point to bling is fairly hard to resist. The EL tape looks better IMHO but seems to be a little harder to work with from what I've read about cutting the tape and resoldering / reconnecting.

I have a 1 meter red EL tape which I think I'll try to wrap around the pan/tilt assembly. From an initial test it can make it around the actobotics channel length I'm using around twice. I'll probably print some mounts for it so that the tape doesn't have to try to make right angle turns at the ends of the channel.

Ben MartinTerry - Lights, EL and solid Panner

Terry the robot now has headlights! While the Kinect should be happy in low light I found some nice 3 watt LEDs on sale and so headlights had to happen. The lights want a constant current source of 700mA so I grabbed an all in one chip solution do to that and mounted the lights in series. Yes, there are a load of tutorials on building a constant current driver for a few bucks around the net, but sometimes I don't really want to dive in and build every part. I think it will be interesting at some stage to test some of the constant current setups and see the ripple and various metrics of the different designs. That part of he analysis is harder to find around the place.


And just how does this all look when the juice is flowing I hear you ask. I have tilted the lights ever so slightly downwards to save the eyes from the full blast. Needless to say, you will be able to see Terry coming now, and it will surely see you in full colour 1080 glory as you become in the sights. I thought about mounting the lights on the pan and tilt head unit, but I really don't want these to ever get to angles that are looking right into a person's eyes as they are rather bright.


On another note, I now have some EL wire and EL tape for Terry itself. So the robot will be glowing in a sublte way itself. The EL tape is much cooler looking than the wire IMHO but the tape is harder to cut (read I probably won't be doing that). I think the 1m of tape will end up wrapped around the platform on the pan and tilt board.

Behind the LED is quite a heatsink, so they shouldn't pop for quite some time. In the top right you can just see the heatshrink direct connected wires on the LED driver chip and the white wire mounts above it. I have also trimmed down the quad encoder wires and generally cleaned up that area of the robot.


A little while ago I moved the pan mechanism off axle. The new axle is hollow and setup to accomodate a slip ring at the base. I now have said slip ring and am printing a crossover plate for that to mount to channel. Probably by the next post Terry will be able to continuiously rotate the panner without tangling anything up. The torque multiplier of the brass to alloy wheels together with the 6 rpm gearmotor having very high torque means that the panner will tend to stay where it is. Without powering the motor the panner is nearly impossible to move, the grub screws will fail before the motor gives way.


Although the EL tape is tempting, the wise move is to fit the slip ring first.

OSP (Open Source Publishing)OSP in 2014

Last February, OSP officially became an asbl/vzw: a Belgian association with no lucrative purposes. We are trying to get more structured and this goes through making precise activity reports. Here is the one for 2014 : OSP2014.pdf.

Pravin SatputeFUDCon APAC 2015 - my experience as an organizing team member

    I was part of FUDCon APAC 2011 but it was just as a speaker and attendee. After attending flock 2014 and talking with Tuan found that things are not very good from Ambassador perspective, not many people are active in India. Decided to become an ambassador and help to make it better. During same time more Fedora India members stepped up as an Ambassador in India and it created good active group of Ambassador in India :)

    We started with couple of meeting before placing the Bid. Later won the bid for FUDCon and then the process started.

    I volunteered myself for coordinating marketing and outreach activity. [1][2] Its 6 month long activity. We had so many meetings. Few planned, few unplanned. Tried everything that was possible from my side to make it successful. Even we had BoF at FOSSASIA 2015 as well to discuss on FUDCon stuff.

    Learning's for me
    1. Worked with lots of peoples. Its really great to see how people come ahead with passion for doing something for Fedora.
    2. Learned smaller things to make event successful from marketing perspective.
    3. Content and designing is very important to make event successful. We got good help for it. Need to involve people as early as possible for review stuff.
    4. Timing is key. !!
    5. Best thing in FOSS world is opportunities never wait for anyone. If one is unavailable someone else naturally takes lead.

    Positive points from FUDCon APAC 2015
    1. Major event of Fedora happened in India after 2011. Not any estimates yet on how many people attended the event but word has reached almost everywhere through social media, emails.
    2. Attendees understood we have good Fedora developer community in India.
    3. We covered lots of trending technologies in event.
    4. Education panel was helpful. Education dept's knows about FOSS stuff but there is no connection between FOSS community and Education department. Red Hat through Fedora community can definitely help here to build this connect.
    5. Most of the active contributors from Fedora were present and we had good meeting like one Ambassador BoF.
    6. Its good that attendees and even organizers felt that we missed "xyz" things. It actually give more motivation to make it further better next time. :)

    Going forward
    1. Momentum is already there, now need to use it for more activities.
    2. Now onward need to grow Fedora community through smaller events, mostly dedicated and targeted for specific audience.
    3. Would like to see more "do" people rather than "talk" people. 

    It was good to meet many friends from different places. Ashutosh and team from Aurangabad, CDAC guys from Mumbai (Kharghar, Andheri). Surprised to see Sneha at FUDCon. :) Few students from Nashik.  Sumit Bhardwaj who took off from Office to attend FUDCon. :)  And i know there are many who just came to learn more about Fedora, so cheers for all. 

    Thanks again to all helped to make FUDCon APAC 2015 a successful event and specifically "FUDCon APAC 2015 team" [3]

Few Photographs






OSP (Open Source Publishing)Relearn 2015

Relearn is back for 2015! We’re very happy to see the summer school continue and morph into a new being again this year, with a new set of people taking care of the organization. Quick recap: OSP set up the first edition of Relearn in 2013. In 2014, Relearn was a jointed venture with all […]

Caolán McNamaragtk auto-mnemonics support

Thanks to Simon Long over at raspberrypi, we now have auto-mnemonics support in LibreOffice under gtk3 and gtk2. So the underlines appear in dialogs when alt is pressed and disappear when released, while menus activated from the keyboard show underlines while those activated from the mouse don't. Gives a more native flavour to the UI. Only in 5.1 for the moment.

Caolán McNamaracrash testing, 1 export failure, 0 import failures

I graphed our crashtesting improvement on importing documents a while back, and mentioned that while import failures had improved dramatically that the export figures weren't as shiny. But there's been some great progress there too, especially with the work mstahl has been putting in, so today the crashtesting has reported effectively three consecrative 0 import failures and with the first drop to 1 reported export failure (an assert) so I present the graph of export failure progress


 And an updated import crashtesting graph.



This is on our corpus of 76000+ documents sucked down from various bugzillas and other sources.

Caolán McNamaraEqualize Width/Height

In LibreOffice 5.1 I've added an equalize width/height pair of adjustments to the "shapes" submenu when multiple objects are selected. Equalize Width and Equalize Height which adjusts the width/height of the selected objects to the width/height of the last selected object.

So if you need to adjust the shapes of a bunch of little images and shapes. Adjust one, then select the lot, selecting the reference one last, and use these to update the rest of the sizes.

Caolán McNamaraImpress Slide Design

Selecting multiple slides in normal view and using the slide design dialog will now affect all the selected slides as opposed to the single last selected slide in 5.1 onwards.

Caolán McNamaragtk3 clipboard support implemented

Our LibreOffice gtk2 vclplug inherits from our generic X11 vclplug and so in lots of places we just continued to use our historic X11 vclplug for various things, one big example being clipboard support.

To do the same with the gtk3 vclplug would work for the case where gtk3 is backed by X11, but not if backed by wayland. So we needed to implement cut and paste with the gtk3 apis.

X clipboard/selection/cut and paste is errr... "tricky", so it was a bit of a death march to drag myself to the keyboard to go about this. But it turns out the gtk clipboard apis are really good and its reasonably easy to get it up and running. So the LibreOffice gtk3 vclplug now has clipboard support.

Last major thing is to get gtk3 gstreamer integration working for video playback and then it's mopping up territory.

Ben MartinAbide the Slide

The holonomic drive robot takes it's first rolls! This is what you get when you contort a 3d printer into a cross format and attach funky wheels. Quite literally as the control board is an Arduino Mega board with Atmel 2650 MCU and a RAMPS 1.4 stepper controller board plugged into it. The show is controlled over rf24 link from a hand made controller. Yes folks, a regression to teleoperating for now. I'll have to throw the thing onto scales later, but the steppers themselves add considerable weight to the project, but there doesn't seem to be much problem moving the thing around under it's own power.



The battery is a little underspeced, it will surely supply enough current, and doesn't get hot after operation, but the overall battery capacity is low so the show is over fairly quickly. A problem that is easily solved by throwing more dollars at the battery. The next phase is to get better mechanical stability by tweaking things and changing the software to account for the fact that one wheel axis is longer than the other. From there some sensor feedback (IMU) and a fly by wire mode will be on the cards.



This might end up going into ROS land too, encapsulating the whole current setup into being a "robot base controller" and using other hardware above to run sensors, navigation, and decision logic.

CraftingType workshopsCrafting Type: Barbados

Crafting Type: Barbados

July 13—17th

Early Bird rate: get 15% off our full prices until June 29th!

Sign up → https://www.tug.org/craftingtype/register-2015-07-barbados.html

OSP (Open Source Publishing)ASBL Print party outcome

When you mix travel stories with non profit association elation, within the zero boundary format of a print party, what do you get? We came up with a mix of different things we wanted to share and show, and mixed them in with some more down to earth writing extracted from our Statutes. One article […]

OSP (Open Source Publishing)Article III: Goal, social object, field of action

This is an extract from our association statutes. Links at the end of the page. The association OSP has as its main goal to propagate Free and Open Source culture in Brussels and internationally. More specifically, OSP asbl aims to stimulate the social movements of Free Culture and Free Software in the field of graphic […]

Pravin SatputeMinutes of first Globalization meeting of Fedora

Today we had first ever Fedora Globalization (g11n) meeting.  Members from 4 groups Internationalization, Localization, Fedora language testing group and Zanata participated. To get background regarding this meeting see g11n proposal.

Due to less time we decided to discuss FLTG and UTRRS topics in next meeting. We are going to have our next meeting on 17th June 2015 same time @ 04:30 UTC.


Highlights

Zanata feedback survey

We are using Zanata as a official translation platform in Fedora. We need to do survey to take feedback from both translators and package maintainers. It will help us to understand need and missing feature from these different user groups. We agreed to do survey around end of august 2015. 
By the next meeting we will have further updates on how we are planning to do it.
ACTION: mkim and apeter followup with lukebrooker. 

L10N sprints based on F23

We discussed number of things under this topic. i.e. Minimum percentage of translations to declare particular language is supported or not. Discussed on language coordinator status.
ACTION: apeter to draft sprint proposal and send on mailing list for discussion.

Translation deadline around Beta

This was most debated topic. There is definitely need to look into this issue. Since after string freeze number of packages get updated. Its good to have some realistic and working deadline for Translation freeze.  We got lots of suggestions. 
ACTION: noriko to prepare draft for extending Translation deadline and send to mailing list.

G11N Infrastructure (IRC, Wiki and Ticket etc.)

We agreed to create g11n mailing list. May be we can simply add other list into g11n mailing list. Traffic on g11n mailing list will be not that high though. Also soon we will have #fedora-g11n channel.  
ACTION: pravins to create g11n mailing list.

G11N FAD - proposal

Quickly we discussed idea about Globalization FAD. Requested everyone interested in attending FAD to add there name. We need to further work on budget before pushing this to Fedora council.

Next meeting

With the lots of good discussions we dropped our earlier plan of meeting once in each month. Decided to meet in 2 weeks.
 
Click to get full meeting log and minutes

OSP (Open Source Publishing)HTML sauce cocktail

We just finished a great workshop week @HEAR Strasbourg on the topic of printing HTML. Printing HTML is not a new idea, but in the last few years we’ve been compiling sets of tools and scripts to properly use HTML as a base for proper layout. This idea has taken on several flavors over different […]

OSP (Open Source Publishing)OSP ASBL VZW Celebration Print Party

We are happy to announce an OSP ASBL/VZW* celebration evening and Print Party. Back from our yearly travel to the Libre Graphics Meeting, full of Toronto stories, and soon to be tattooed with a VAT number, OSP welcomes you in their transit tavern. Join us in cutting, plotting and browsing recent works. Come to celebrate […]

Caolán McNamaraimpress, right click, insert image





Added "insert image" to right click context menu in impress.

Pravin SatputeFUDCon APAC 2015 - 19th May planning meeting minutes

We had 14 members in the meeting. Following are key points:
  • Started with scheduling. Most of the scheduling work done on paper. By this 22nd May we will get first draft of schedule.
  • Travel side: Remaining tickets will be mostly get booked on Wed. 20th May. Work on invitation letter is going on.
  • Outreach:
    • We voted on two drafts and decided to choose Dark background poster. Standee need further work. We decided to use more generic FUDCon standee.
    • Social media post going well. Need to keep this up. If you have any tweets in mind feel free to edit wiki.
    • Soon contacting speakers and ask them put missing details in fudcon.in portal. Also asking to speakers for bogging about there topics,we can use those to spread news about FUDCon.
    • Ticket for T-shirt design.
    • June 1st and 2nd week we will plan F22 release party in few colleges and use this opportunity to promote FUDCon. This points also reminder regarding F22 DVD's.
    • Video series: Few clips are ready now, work is going on to compile it and make short video.
  • Website:
    • Redesign done. Its now in production. For more info read post.
    • We need some volunteer to add topics for "News & Updates" section.
  • SWAG
    • We reviewed few swag. Will finalize mostly in next meeting.  Most of the quotes and ideas are available in http://piratepad.net/FUDConPunePlanning
  • Video recording of talks. Trying for self recording with http://bigbluebutton.org/
For more details visit piratepad page

Caolán McNamaracrash testing, 1 import failure

moggi described here our crash testing infrastructure. Basically we have a document horde mostly populated through get-bugzilla-attachments-by-mimetype which downloads all the attachments from our bugzilla (and a whole bunch of other bugzillas) that are in formats which LibreOffice can open. We then import the lot of them with the above testing harness looking for crashes and aborts. A new report tends to appear every 1-3 days.

These documents are filed in bugzillas. In many cases they were filed specifically because they were causing some sort of trouble for someone, so there are a lot of hostile documents in there.

We currently have 76221 documents in the horde, the most recent run reports one, one single solitary failure (an assert in a .doc about invalid positioning of a cross-reference bookmark in a document with change-tracking enabled).

Here's a graph over time of our failure rate. Where failure is either a straight forward crash, or a triggered assert. The builds are dbgutil, extra-debugging, extra-checking, assert-enabled, exception-specification-enabled builds.


You get temporary local peaks every now and then when either a new assert is added or someone introduces a bug. We have two purposes here, immediate regression discovery and historic bug removal.

We also have export crash testing, where the numbers aren't as shiny yet, but are on an equivalent downward trend. More on that in a while when we figure out how to fix this final import stinker.

Caolán McNamaragtk3 native theming menubar

After something of a struggle I appear to have the right gtk3 menubar theming combination for the selected item now after image...

before image...

Caolán McNamaramore gtk3 theming

Continuing on the Gtk3 theming work. Now got the combobox and editbox rendering and sizes correct along with new gtk3-alike focus rectangles. Here's the after...
Here's the before of what the gtk3 effort looked like in 4-4
Here's the equivalent 4-4 gtk2 effort. Note that now in the above gtk3 theming we have a single focus rectangle for the full combobox rather than a focus rectangle around the non-button part of the widget and that, as in a normal gtk3 combobox, the background isn't set to blue when selected. I always hated that out of character blue listbox/combobox selection color. So certain elements of the gtk3 theming now slightly surpass the gtk2 one which is nice. Though clearly the spinbuttons are still effectively imaginary ones as they look nothing like the native gtk3 ones.

I also fixed (for both gtk2 and gtk3) that notorious checkbox issue where unchecking a checkbox would leave a portion of the check still drawn outside the checkbox rectangle.

Pravin SatputeMinutes of FUDCon APAC 2015 planning meeting

We had our weekly planning meeting today. Comparing to earlier Fudcon planning meeting with today's, we have done lots of progress. Most of the things are already in good shape including Travel, Accommodation, FUDPub, Website and Scheduling etc.

Updates are as follows:

Travel
    All sponsorship request tickets  are resolved now. Prasad (PJP) yesterday commented decisions on all the tickets. We have clear picture now how many are joining us At Pune for FUDCon :)
   Same time hoping others to whom we not able to sponsor will also join us.  Mostly we will have one more meeting for traveling coming Friday and that will be last one.

Accommodation     We still have 12 more slots remaining for stay. We are planning to talk with colleges to allot/provide few rooms in hostel for students traveling from other places. Will get update on that soon.

Scheduling
    Storage, Containers and  OpenStack track leaders are ready with schedule. It will be nice if track leaders can blog regarding highlights of there tracks, what to expect. We can use those stuff later for marketing FUDCon.
    Niranjan, PJP and Parag are working on scheduling main tracks. Will have some more update by this Friday.

Outreach/Marketing
     Going good. Planning to send invitation email by this Friday. Regarding Colleges, most of the colleges are closed and going to open on 1st or 2nd week of June. Thinking for good time to start talking with them.
    Discussed on draft of Flyers and Standee created by Yogi. Suggested to change background from Blue to White. Also there was discussion on T-shirt design, will create ticket for same soon.
    Regarding Videos series, Shrink thinking to do some hangout session and use recording as a video.
    Fedora 22 is getting released in 26th May, this is good time to increase awareness regarding Fedora and FUDCon through F22 release parties. Planning to do some during 1st or 2nd week, same time there was suggestion to do install fest rather than simple talks and cake cutting.
    Social media posts are not going very well, so requested all members start tweeting/sharing about FUDCon. We do have plan for scheduled tweets/FB Posts, those will be mostly related to speakers, there bio and sessions information.

Websites
    Devel instance available for testing [3] Do go through it and if find any issue report on fudcon-planning list or #fedora-india. Soon planning to deploy it.

SWAG   
    Discussed on quote for some swags.

    For more details regarding FUDCon planning visit piratepad page.

Nathan WillisThe OpenType in Open Source workshop at LGM 2015

This year at Libre Graphics Meeting, we held a workshop / discussion session about OpenType support in open-source graphics applications. I proposed the session, but really only to act as cheerleader.

OpenType features have been possible (and available) in fonts for well over a decade. But few if any applications make them easy to access and use. At the ATypI meeting in October 2014, type designers got so upset at how bad Adobe’s OpenType feature support is in things like Illustrator and InDesign that they actually started a petition in protest.  That raised a red flag with me, since open-source applications aren’t any better in this regard. So I proposed on the CREATE list that we get together and talk about it.

Turnout was excellent—we didn’t do a full headcount, but representatives from every large free-software graphics tool at LGM were there (and several of the smaller ones, too).  The meeting room was packed. That’s good news, because it indicates a lot of interest in getting proper OpenType support working and in coming up with implementation approaches that will feel consistent from app to app.

To be more specific (for anyone with the misfortune to stumble onto this post from outside), we were there to look at how application projects could add support for optional advanced OpenType features that the user should be allowed to switch on and off as desired.  That turns out to be a bit complicated.

A little background

OpenType features come in two general forms: look-up rules that change the positioning of one or more glyphs (which you’ll see called GPOS lookups), and rules that substitute glyphs for other glyphs (which would be GSUB lookups).  There is a big, public list of “tag” names that font developers can use to designate their various GSUB and GPOS rule sets with some semantic meaning.

For instance, replacing the “f” and “i” glyphs with the “fi” ligature glyph is a GSUB rule that is usually listed under the “standard ligatures” tag, ‘liga’.  Semantically, liga is supposed to be for ligature substitutions that are active by default.  In contrast, the “discretionary ligatures” tag ‘dlig’ is supposed to designate ligatures that are not required, but that the user might want to enable for decorative purposes.  A lot of historical fonts have a “Qu” ligature that would fall under this category, with the tail of the Q sweeping out way under the u.  Similarly, there are GPOS rule sets like “case-sensitive forms” or ‘case’ that are supposed to be always on: ‘case’ is meant to adjust the vertical position of punctuation like hyphens and parentheses so that they line up correctly for ALL CAPITAL TEXT instead of for lowercase.  Then there are GPOS rules that are optional, like “tabular numerals” or ‘tnum’—which shifts all numeric digits to make sure they line up in columns.

[Side note: there's also a large set of these features that are defined specifically to enable shaping of complex scripts (like Arabic and Indic scripts), where the context of the letters and words requires a lot of flexibility for shape and placement when compared with scripts like European alphabets or CJK text.  Consensus was clear that these features are meant to be handled by the shaping engine, not the application, and the shaping engine is already doing a good job here.]

First tricky bit is, though, that what’s “supposed” to always be on and what’s supposed to be left up to the user as an option is kind of arbitrary.  The creators of OpenType don’t even agree.  Adobe has one list with such advice; Microsoft has another, and Adam Twardoch of FontLab has yet another.

Discussion and analysis

So we spent some time discussing the various types of OpenType features—at least those on the “official” lists of “registered” tags linked to just above. The question came up how often that list of registered feature tags gets expanded; the answer is evidently “not often.” Then we talked a lot about the different kinds of features and how they may be used.  Some of them a user might apply only to a few selected characters (even one); others would be desirable for whole blocks of text or documents.

But it’s not that simple.  An “default on” feature cannot be trusted to work flawlessly in every font and every situation, so the user needs some way to switch it off. And a contextual feature like “smart fractions” (‘frac’) might match some text pattern but actually be semantically different in the document. My example was when a user writes “I’m working 24/7″—that numeric sequence looks like a fraction, but in reality it isn’t one. [Note: part of the complication has to do with the fact that there are two slash-like Unicode characters, the 'slash' itself (U+002F, "SOLIDUS") and the 'fraction bar' (U+2044). Usually only the 'solidus' slash is on the keyboard.]

We also looked at several UI proposals (1-2-3-4-5-6-7) related to OpenType features that had been previously published by others, just to see what the landscape looked like.  Here (as well as in all of the discussion about when and how a user might want to access a particular feature), we got a lot of good feedback from interaction designer Peter Sikking.  For starters, Peter pointed out that many of the UI suggestions’ complaints are more reactionary about what isn’t working right than they are carefully-considered interface rules, so they may be interesting, but are not work to copy.

Peter also pointed out that the application projects represented have very different needs: an interface that works for Scribus—which is text-centric and offers lots of typography features—would not work for GIMP, where the text tool is a less important component (and one that has far less screen real estate available to its user interface). The best we can hope to do, he said, is come up with some “best practices” that apply to different scenarios, and let each application project implement them on their own as best they can.

Someone (and I think it was Peter, but I’m not 100% sure this many days later; please let me know if it was you) then pointed out that a few of the features amount to typeface-wide choices that are often implemented (at present) in separate fonts.  The prime example is small caps, which is frequently available as an OpenType feature (‘smcp’) but even more frequently is pulled out into a separate font, e.g. “Foo Serif SC”.  Though less used, there is an italics feature tag, too (‘ital’).

Making matters worse, many applications also allow “fake” small caps and italics. The user, however, will likely not care whether small caps or italics are implemented as an OpenType feature or in separate font files; they just want to apply them as a text style. That both presents a UI issue and impacts implementations.

We also briefly discussed whether supporting OpenType features in text markup would affect file formats.  Generally speaking, everyone seemed to think this would not be a difficult problem. There was a general desire to implement something that follows the approach used by CSS.  It seems to be working well for users (and developers), so that looks good.

Among the other points raised:

  • Behdad Esfahbod pointed out that CSS feature support is frequently accessed with a simple slider option that turns features on and off without significant headaches or dependency problems. For example, contextual ligatures, historical ligatures, and discretionary ligatures are all just “ligatures.”  The users don’t care (nor need to know) which feature provides the ligature they want. Similarly, its irrelevant to users that the ‘frac’ feature has a hidden dependency on separate numerator and denominator features.
  • Some of the features, like stylistic sets and character variants, come not just with a set of GPOS/GSUB rules, but also a human-friendly name that is encoded into the font.  For example, a font that includes ornamental caps in a stylistic set might name that set “Ornaments”.  This name would be a string in the uiLabelNameId field within the font file; so the application will need a way to access that and expose it to the user.
  • There should probably be some way to specify an “on by default” set, since it seems to be expected, but also a way for the user to switch it off.
  • There should be controls for the common (and well-defined, publicly “registered”) features, but there should also be a fallback mechanism that allows the user or application to access any feature via the feature’s four-letter tag.

Where to now?

Looking forward, we settled on a few “next action” items. For starters, we are going to try and coordinate our future discussions through the CREATE mailing list, which was invented to be a home for just this sort of collaboration.

Regarding the UI and UX questions, Peter agreed to work on developing what will eventually form the “best practices” and related recommendations for different applications.  The first step, however, is to spend some time talking with typographers and other graphic-designer-like users (who care about OpenType feature support) to study their processes and expectations.  This sort of process is what Peter does professionally; he most recently has been undertaking a similar systematic approach to interaction development with the Metapolator project (which he gave a talk on at LGM).  I mention this to explain that there are several steps between getting started and actually seeing prototypes, much less full-blown recommendations.

Regarding the lower-level plumbing layer: Fontconfig already catches the presence of OpenType feature tables when it indexes a font.  To get access to such a feature, though, the shaping engine (i.e., the software library that takes Unicode text characters, looks them up in the active font, and returns the right glyphs) also needs a way to report the presence of OpenType features, and a way for applications to request that the feature be turned on or turned off.  HarfBuzz is the shaping engine used by almost all free-software tools, and Behdad agreed to take on adding the necessary functions and API calls.

Moving one level up, some applications use HarfBuzz directly, but a lot of applications (including GIMP and Inkscape) use an intermediate text-layout library called Pango.  So Pango will also need hooks for OpenType features.  Behdad indicated that he is on top of this feature request as well.

Application projects, at the moment, do not have a lot that they need to do.  However, since the eventual ‘best practices’ are going to require using HarfBuzz, any application project that has been considering porting its text handling to HarfBuzz would save a lot of trouble later by getting started on that project now.  Earlier in the week, we held a HarfBuzz documentation sprint to develop a “porting manual” so to speak.  It isn’t quite finished yet, but the core example is there and will hopefully prove useful.

The exception to the above is that FontForge may need some work to support access to all of the OpenType features that may be exposed to the applications. The eventual plan was that FontForge (or other font editors) ought to provide a way to test features that somewhat resembles how feature usage is implemented in applications, but getting there may require some groundwork in advance.  The same may also be true for apps like GNOME Characters or the KDE and GNOME font managers, but I don’t think those developers were on hand at LGM.

Similarly, the thinking was that Fontconfig may also require some tweaking in order to allow testing of OpenType features.  During the smallcaps discussion mentioned above, Behdad noted that Fontconfig already lets the user define, in essence, “virtual fonts” that are simply fonts.conf references to existing fonts but with different OpenType features switched on or off.  A quick test revealed that this feature works to a degree, but has some bugs that need attention.  Here again, though, Behdad said he’s happy to take them on.

There were also open questions about real-world font implementations of several features. Google Web Fonts and Open Font Library, unfortunately, don’t index which fonts have these features. I agreed to do some research here.

We may also need to gather some good test cases: fonts with a variety of features implemented, and perhaps fonts that we will add features to (e.g., ‘ital’, which seems pretty rare).  If you’d like to help me that, get in touch, of course.

As for a web presence, I have tentatively set up a GitHub organization to use—at this point, primarily for the wiki and progress-tracking functionality.  You can find it at https://github.com/opensource-opentype … you may need to request membership if you want to contribute, although I’m new to “organizations” so bear with me if I have the details a bit off.  We’ll see.

Onward and openward!

For everyone else: if you want to keep up with the discussion, you can follow (or join) the CREATE mailing list. You can also take a look at the Etherpad notes from the session, although I cannot guarantee that they’re free of typos.  If you find any … someone else made those.

More will surely come. If you work on open fonts—or if you use or develop free software—I hope you’ll stayed tuned or even get involved.

CraftingType workshopsISIA Urbino Type Design Week 2015

ISIA Urbino Type Design Week 2015:

For those seeking type education in Europe, the ISIA Urbino Type Design Week is a great option!

Behdad EsfahbodHow to use custom application fonts with Pango

I am at the Libre Graphics Meeting in Toronto this week, which means that I got to talk to GIMP and Inkscape developers after many years, and was reminded that Pango still does not make it easy to use custom (aka. application) fonts, and it still does not allow turning OpenType features on or off.  So I decided to give Pango some love.

OpenType features is bug 738505.  Akira and Matthias wrote the initial patch, but there are certain complexities in handling the attributes that needs to be fixed before this can go in.  I'll see if I can get myself to do that tomorrow.

Custom fonts is a different issue.  And by custom fonts I mean when an application wants to use a font file that it ships, but is not installed in the system or user font directories.  Most of the times when people have this request, they also don't want any system fonts, ie, they only want their custom fonts.  A font viewer is a basic example of this that we never had a good solution for.

Webfonts, and other embedded fonts, are another use case.  Eg, a document might bundle fonts that it uses.  Many times, the document would want to refer to the font using font family name, so in that case you want the font to be added to the system fonts and go through the font matching process.

Back in 2006 when we considered pangocairo the only backend we care about, I proposed that we add pangocairo API to use a certain cairo_face_t.  The thinking was that by doing it in the pangocairo layer, we don't have to do it in individual platform backends (pangofc, pangowin32, pangoatsui / pangocoretext).  That, however, never happened, because I was too lazy to implement it, but also because it was actually a lot of tricky work, to make the generic pangofc layer understand this custom object...

I have since changed my mind on how this should be done.  Over the years different groups asked how they do this, I've had suggested different variations of the same solution: custom Fontconfig config; and Win32 / CoreText APIs on other platforms.  Ie, do it at font host layer, not Pango layer.  It's a legitimate approach, if not most convenient.

Here is one way to do it, using fontconfig API:

Before calling into Pango, do this:
  • Create a new fontconfig configuration object using FcConfigCreate() and make it current using FcConfigSetCurrent(); this ensures that default configuration and fonts are not loaded,
  • Add fonts to it using FcConfigAppFontAddFile() or FcConfigAppFontAddDir(),
  • Use Pango as you otherwise would.
This way Pango will only see your fonts.  If you want to add your fonts but also see the system fonts, you can skip the first step.  That will make your custom fonts visible to all Pango users within the process, including Gtk+ and its font selection dialog.  If, instead, you want to limit it to a particular document, we need something more involved; we talk about further down.

Recently I needed to do something similar in Noto's test suite, which is written in Python.  Since we currently don't have fontconfig Python bindings, I either would have had to be bothered to do a ctypes binding of the few functions I needed, or find an even simpler solution.  Which is:

Before calling into Pango, do this:
  • Set the FONTCONFIG_FILE environment variable to point to your custom fonts.conf XML,
  • Add your custom font directory to the above-mentioned XML.
That's it.  Here's are the two steps for Noto: 1 and 2.

Now, this sounds easy, and works for very limited usecases.  But for it to be useful in apps like The GIMP or Inkscape, there are a few issues that need to be handled.  And I'm writing this post to raise enough interest from Akira, Matthias, Khaled, and others, to help fix these so we can have a great custom-font experience.  Writing a tutorial when these are all fixed would be great, but for now, this post is documentation enough!

First, the custom XML currently has to have a cachedir element or fontconfig warns.  That's annoying to say the least.  Filed here.  For now, you can use "<cachedir prefix="xdg">fontconfig</cachedir>" and that should work with recent-enough versions of fontconfig that understand the prefix="xdg".  Older version will ignore it and try to create a fontconfig directory under the current directory and use as cache, so beware of that.

Python / JS / etc bindings for fontconfig will be useful if we are pushing in this direction.  Filed here.

Another problem with the suggested setups above is that it works for non-GTK use-cases, like a game, test suite, etc.  But in most usecases, you definitely don't want your menus and other GUI elements to use the custom fonts.  In the case of a document editor or graphics editor, you might want to add custom fonts per document.  You can do that by using a separate PangoFcFontMap instance for each custom need.  I outlined that like this before:
  1. FcConfigCreate()
  2. FcConfigAppFontAddFile()
  3. pango_cairo_font_map_new_for_font_type()
  4. Use that PangoFontMap to create your context, etc.
  5. Every time you want to use Pango with that context, FcConfigSetCurrent the above config.  Then reset it back to whatever it was before.
This will allow you to use Pango with custom-only fonts in parts of the application.  If you also want the system fonts to be visible in this private font map, you can use the obscurely named FcInitLoadConfigAndFonts() instead of FcConfigCreate().

That's not awfully bad.  Except that the last step is very cumbersome and a recipe for disaster.  That step can be avoided if we have API to attach a custom FcConfig to a PangoFcFontMap.  Owen and I talked about it years ago and I filed a bug, but never happened... until yesterday.

I added pango_fc_font_map_set_config() yesterday, and just added pango_fc_font_map_config_changed().  So you can attach your private FcConfig to a private PangoFcFontMap, inform the font map every time you change the FcConfig (eg, add more fonts to it), and you should be able to use that font map to create layouts and use normally, without switching FcConfig's all the time.  However, remember: I wrote the code, but I didn't test it.  So a brave first user is wanted.

Then there's the set of issues with Fontconfig; the fact that to add font or configuration to an FcConfig, you need to have those in files, and can't add from memory blobs.  Fixing that should be fairly easy, and I filed those last year.  Would be great if we can fix them soon.  Here's one for font blobs, and another for configuration XML.

Another issue with using custom fonts is that every time you add a custom font, Fontconfig has to scan it.  Ie, you get no benefit from the Fontconfig font cache.  This can be really slow for huge fonts.  And became five times slower when the Adobe CFF rasterizer was integrated in FreeType.  I tried a few different approaches to speed it up.  Removing the (prematurely added) FC_HASH helped.  But there's more that can be done.  That bug is here.

Now, here's the one remaining issue that I don't have a full answer for: by sidestepping the default fontconfig configuration, you will miss some essential features.  Right now those are: synthetic italics, synthetic bold, and scaling of bitmap fonts.  The reason is that these are encoded in configuration files instead of in the library.  That sounds slightly over-engineered, and I like to improve it, but as of right now, that is the way it is.  You also will lose system-wide and user's configuration.

Sometimes that's not a problem.  For example, in the Noto test suite, we don't want any system or user configuration or any synthetic emboldening or italics, so the FcConfigCreate() approach suites those kinds of scenarios perfectly well.  Same about the preview part of a font-viewer, or other use cases where being system-independent is a goal.  But in other situations it might not be desirable.

I can, of course, suggest that anyone creating a custom FcConfig to add the essential configuration to it; Eg. bitmap scaling, synthetic bold and italic, essential aliases, user's configuration.  But that still leaves out generic aliases, system config, etc.  And I don't like that approach, because that spreads our default configuration all around Fontconfig clients and will create a mess that we would have to clean up every time we change how we do configuration.  It's a leaky abstraction.

Quite fortunately, there's an almost-perfect solution for that.  The obscure FcInitLoadConfig() function creates a new FcConfig and loads the default configuration files, but does not load any fonts referred to from those configuration files.  As such, you can go ahead and add your own fonts to it, but still benefit from the configuration.  Don't complain, if the configuration does undesirable font aliasing or other stuff.  I'm hugely relieved that this might do exactly what we need.  I have not tested this, so if you test, please kindly let me know how it works.  I cannot think of obvious undesirable behaviors from this approach.

So, to wrap up, assuming you would use Pango to be released soon, this is how you do custom fonts with PangoCairoFc:
  1. Create a custom FcConfig:
    • Use FcConfigCreate() if you don't want any system / user fonts or configuration whatsoever, neither you want any synthetic or other manipulations,
    • Use FcInitLoadConfig() if you want system / user configuration, but no system / user fonts,
    •  Use FcInitLoadConfigAndFonts() if you want system / user configuration and fonts visible in your private font map,
  2. Call FcConfigParseAndLoad() to add any custom configuration you want to add.  Such configuration can add custom font directories, or you can use next step,
  3. Call FcConfigAppFontAddFile() or FcConfigAppFontAddDir() to add custom fonts,
  4. Call pango_cairo_font_map_new_for_font_type(CAIRO_FONT_TYPE_FT), to create a private PangoCairoFcFontMap, which is a subclass of PangoFcFontMap, which is a subclass of PangoFontMap,
  5. Call pango_fc_font_map_set_config() to attach your custom FcConfig to your private PangoFcFontMap,
  6. Call pango_fc_font_map_config_changed() whenever you add new fonts to your custom FcConfig,
  7. Use that PangoFontMap to create your context, etc, and use normally.
You can optimize the logic to use the default font map if there are no custom fonts involved, and do the above otherwise.

This can trivially be adapted to the PangoFT2 backend by the way.

If your application has its own font dialog, then you can implement that using the private font map as well, and things should work.  But if you use the GTK+ font dialog, currently you can't attach your private font map to the font dialog instance.  I filed a request for that.

While there, let me address the issue of having or not having to restart applications when new fonts are installed.  As I covered in my State of Text Rendering in 2009 and presented at the Gran Canaria Desktop Summit, online font addition/removal should Just Work in GNOME.  I implemented that in 2008.  Indeed, it does in simple applications.  They are a bit slow (~4 seconds before new font shows up), so I filed a bug to shorten the delay.  However, a lot is not working:
  • I implemented this in the GTK+ font-chooser dialog in 2009, to update online as fonts were added / removed.  But font-chooser was rewrote in 2011 and is completely broken now.  So I filed a new bug (UPDATE: this is fixed now),
  • I wasn't loud enough in making this feature heard or document how custom font dialog widgets can implement this.  Take a look at this deprecated font dialog implementation in GTK+.  Or watch the new bug for discussion and how this will evolve,
  • To implement this for non-GTK+-based applications, you need to catch the XSETTINGS signal yourself and respond; search for Fontconfig/Timestamp in GTK+ source,
  • If you create private fontmaps and FcConfig's that include system / user configs or fonts (ie, you used FcInitLoadConfig() or FcInitLoadConfigAndFonts()), then you also need something similar to the above code in GTK+, that is, catch the signal, recreate your FcConfig (and add your custom fonts to it again), and attach the new FcConfig to your PangoFcFontMap.
As for pangocairo API to use a cairo_font_face_t, I still think that would be useful, but much less so than before.  Also, it won't be very useful until cairo adds API to create a cairo_font_face_t from a font file or memory blob.  Right now the only way to do that is to write code for the FreeType, Win32, and ATSUI / CoreText font backends of cairo separately.

Even if you try to do that, you will hit a very well-known problem with AddFontMemResourceEx(); which is: if you try to add a custom font with a family name that matches that of an existing font on the system, when you try to use the font, you might end up using the version installed on the system.  Ie. you can add fonts to the system, but you can't reliably address them.  The hack that Firefox, HarfBuzz, and others use to work around this is to modify the font data before calling AddFontMemResourceEx() to set a unique font family name on it, so they can be sure there will be no collision.  Here's the HarfBuzz code for that.

Anyway, I hope this write up helps developers, after confusing them, implement custom fonts in their applications, and motivate others to help me fix remaining issues and generate examples and better documentation.

While writing this, I ended up doing some bug triage and closing obsolete issues around Pango, Fontconfig, and cairo, which is always nice :D.

Anyway, this alone makes me really happy that I attended LGM.  The HarfBuzz Documentation Sprint was also very productive, but takes a couple more weeks to get to a stage that we can show off what we produced.

Caolán McNamaranew area fill toolbar dropdown

The GSOC 2014 Color Selector is in LibreOffice 4.4, but it's not used for the "area fill" dropdown in impress or draw. So I spent a little time today for LibreOffice 5.0 to hack things up so that instead of using the old color drop down list for that we now have the new color selector in the toolbar instead. Gives access to custom colors, multiple palettes, and recently used colors all in one place.
LibreOffice 5.0
And here's the old one for reference, I've backported the above change to Fedora 22's 4.4.X to address some in-house vented frustration at selecting colors in impress.
LibreOffice 4.4


Nicolas Spalinger (advogato diary)3 May 2015

Microsoft releasing an open font!

So, after the pleasant but rather unexpected news of Adobe's Source * font families released openly and developed on a public git repo, now we have Microsoft starting to release fonts under the OFL for one of their many projects!

Who would have thought that this could actually happen, that such big font producers would even consider doing this?

But I guess cross-platform web technologies and the corresponding culture tends to carry with it the values of interoperability, consistency and flexibility... And it just makes sense to have unencumbered licensing for that. There must be some value in pursuing that approach, right?

The Selawik font (only Latin coverage at this point) is part of (bootstrap)-WinJS and is designed to be a open replacement for Segoe UI.

A quick look at the metadata reveals:

Full name: Selawik
Version: 1.01
Copyright: (c) 2015 Microsoft Corporation (www.microsoft.com), with Reserved Font Name Selawik. Selawik is a trademark of Microsoft Corporation in the United States and/or other countries.
License: This Font Software is licensed under the SIL Open Font License, Version 1.1.
License URL: http://opensource.org/licenses/OFL-1.1
Designer: Aaron Bell
Designer URL: http://www.microsoft.com/typography
Manufacturer: Microsoft Corporation
Vendor URL: http://www.microsoft.com/typography
Trademark: Selawik is a trademark of the Microsoft group of companies.


Quite a contrast from the very exclusive licenses attached to the fonts commissioned for Windows...

(Oh and the apparent toponym with an Inupiat name is a nice touch too).


Caolán McNamaragtk3 notebook theming

Starting to work on the gtk3 theming now. Here's a before and after shot of today's notebook color and font theming improvements.

Before:

After:
And a a random native gtk3 notebook for comparison


Ben MartinUnbrick the NUC

It seems there are many folks with the suspend of death on the NUC. When you suspend to RAM you can't get back. When you disconnect power for a while you can't turn it on again. Welcome to brickland, population: you. I found that following the advice on the forums if I disconnect the CMOS battery for a bit then I could turn on the NUC again.

The downside is that the CMOS battery is installed under the motherboard, so you have to remove the motherboard which is no easy task the first time. Then each subsequent time that the NUC bricks you have to take it apart again to such a great extent.

Luckily I found these extension leads which let me bring out the battery from the case. So hopefully now a debrick isn't going to involve a system teardown anymore.

CraftingType workshopsHere’s a few snaps of the final review on Day 3 of...


Feedback on Day 3 of Crafting Type Boston 2015


Final prints on Day 3 of Crafting Type Boston 2015


Feedback close up on Day 3 of Crafting Type Boston 2015

Here’s a few snaps of the final review on Day 3 of Crafting Type Boston 2015

Jakub SteinerThe chore of tuning PIDs

Tuning PIDs is one of those things you really don’t want to do, but can’t avoid it in the acrobatic quad space. Flying camera operators don’t usually have to deal with this, but the power/weight ratio is so varied in the world of acro flying you’ll have hard time avoiding it there. Having a multirotor “locked in” for doing fast spins is a must. Milliseconds count.

FPV Weekend

So what is PID tuning? The flight controller’s job is to maintain a certain position of the craft. It has sensors to tell it how the craft is angled and how it’s accellerating, and there’s external forces acting on the quad. Gravity, wind. Then there’s a human giving it RC orders to change its state. All this happens in a PID loop. The FC either wants to maintain its position or is given an updated position. That’s the target. All the sensors give it the actual current state. Magic happens here, as the controller gives orders to individual ESCs to spin the motors so we get to there. Then we look at what the sensors say again. Rinse and repeat.

PID loop is actually a common process you can find in all sorts of computer controllers. Even something as simple as a thermostat does this. You have a temperature sensor and you drive a heater or an air conditioner to reach and maintain a target state.

The trick to a solid control is to apply just the right amount of action to get to our target state. If there is difference between where we are and where we want to be, we need to apply some force. If this difference is smaller, only a small force is required. If it’s big, a powerful force is needed. This is essentially what the P means, proprotional. In most cases, as a controller, you are truly unhappy if you are elsewhere to where you were told to be. You want to correct this difference fast, so you provide a high proportional value/force. However, in the case of a miniquad, the momentum will continue pulling you when you reached your target point and don’t apply any force anymore. At this point the difference occurs again and the controller will start correcting the craft pulling it back in the opposite direction. This results in an unstable state as the controller will be bouncing the quad back and forth, never reaching the target state of “not having to do anything”. The P is too big. So what you need is a value that’s high enough to correct the difference fast, but not as much so the momentum gets you oscillating around the target.

So if we found our P value, why do we need to bother with anything else? Well sadly pushing air around with props is a complicated way to remain stationary. The difference between where you are and where you want to be isn’t just determined by the aircraft itself. There are external forces that are in play and those change. We can get a gust of wind. So what we do is we correct that P value based on the changed conditions. Suddenly we don’t have a fixed P contoller, we have one that has variable P. Let’s move on how P is dynamically corrected.

The integral part of the controller corrects the difference that suddenly appears due to the new external forces coming into play. I would probably do a better job explaining this if I enjoyed maths, but don’t hate me, I’m a graphics designer. Magic maths corrects this offset. Having just the proprotional and integral part of the corrective measure is enough to form a capable controller perfectly able to provide a stable system.

However for something as dynamic as an acrobatic flight controller, you want to improve on the final stage of the correction where you are close to reaching your target after a fast dramatic correction. Typically what a PI controller would get you is a bit of a wobble at the end. To correct it, we have the derivative part of the correction. It’s a sort of a predictive measure to lower the P as you’re getting close to the target state. D gives you the nice smooth “locked in” feeling, despite having high P and I values, giving you really fast corrective ability.

There are three major control motions of a quad that the FC needs to worry about. Pitch for forward motion is controlled by spinning the back motors faster than the front two motors thus angling the quad forward. Roll motion is achieved exactly the same way, but with the two motors on one side spinning faster than the other two. The last motion is spinning in the Z axis, the yaw. That is achieved by torgue and the fact than the propellers and motors spin in different directions. Typically the front left and back right motor are clockwise spinning and the front right and back left motor are spinning counter clockwise. Thus spinning up/accellerating the front left and back right motors will turn the whole craft counter clockwise (counter motion).

I prepared a little cheat sheet on how to go about tuning PIDs on the NAZE32 board. Before you start though, make sure you set the PID looptime as low as your ESC allow. Usually ESC send the pulses 400 times a second which is equivalent to a looptime of 2500. The more expensive ESC can do 600Hz and some, such as the miniscule KISS ESCs, can go as low as 1200.

ESC refresh rate NAZE32 Looptime
286Hz 3500
333Hz 3000
400Hz 2500
500Hz 2000
600Hz 1600

You do this in the CLI tab of baseflight:

set looptime=2500
save

Hope this has been helpful for some as it was for me :).

Quick Guide on PID tuning

Jakub SteinerMinis and FPV

FPV

I’ve got some time into the hobby to actually share some experiences that could perhaps help someone who is just starting.

Cheap parts

I like cheap parts just like the next guy, but in the case of electronics, avoid it. Frame is one thing. Get the ZMR250. Yes it won’t be near as tough as the original Blackout, but it will do the job just fine for a few crashes. Rebuilding aside, you can get about 4 for the price of the original. Then the plates give. But electronics is a whole new category. If you buy cheap ESCs they will work fine. Until they smoke mid flight. They will claim to deal with 4S voltage fine. Until you actually attach a 4S and blue smoke makes its appearance. Or you get a random motor/ESC sync issue. And for FPV, when a component dies mid flight, it’s the end of the story if it’s the drive (motor/esc) or the VTX or a board cam.

No need to go straight to T-motor, which usually means paying twice as much of a comparable competitor. But avoid the really cheap sub $10 motors like RCX, RCTimer (although they make some decent bigger motors), generic chinese ebay stuff. In case of motors, paying $20 for a motor means it’s going to be balanced and the pain of vibration aleviated. Vibrations for minis don’t just ruin the footage due to rolling shutter. They actually mess up the IMU in the FC considerably. I like Sunnysky x2204s 2300kv for a 3S setup and the Cobra 2204 1960kv for a 4S. Also rather cheap DYS 1806 seem really well balanced.

Embrace the rate

Rate mode is giving up the auto-leveling of the flight controller and doing it yourself. I can’t imagine flying line of sight (LOS) on rate, but for first person view (FPV) there is no other way. NAZE32 has a cool mode called HORI that allows you to do flips and rolls really easily as it will rebalance it for you, but flying HORI will never get you the floaty smoothness that makes you feel like a bird. The footage will always have this jerky quality to it. On rate a tiny little 220 quad will feel like a 2 meter glider, but will fit inbetween those trees. I was flying hori when doing park proximity, but it was a time wasted. Go rate straight from the ground, you will have way more fun.

Receiver woes

For the flying camera kites, it’s usually fine to keep stuff dangling. Not for minis. Anything that could, will get chopped off by the mighty blades. These things are spinning so fast than antennas have no chance and if your VTX gets loose, it will get seriously messed up as well. You would not believe what a piece of plastic can do when it’s spinning 26 thousand times a minute. On the other hand you can’t bury your receiver antenna on the frame. Carbon fibre is super strong, but also super RF insulating. So you have to bring it outside as much as possible. Those two don’t quite go together, but the best practice I found was taping one of the antennas to the bottom of the craft and have the other stick out sideways on top. The cheapest and best way I found was using a zip tie to hold the angle and heatshrink the antenna onto it. Looks decent and holds way better than a straw os somesuch.

Next time we’ll dive into PID tuning, the most annoying part of the hobby (apart from looking for a crashed bird ;).

Ben MartinTiny Tim improves and gets Smaller

I finally switched Tiny Tim over to a lipo battery. Almost everything worked when I tested the new battery, the only thing that failed in a major way were the two 2812 LEDs which, either didn't come on or came on for a very quick moment and went dark. So Tim is now smaller again without the "huge" AA battery pack at it's tail.


The 2812 story was interesting. It wasn't going to be happy jumping to the 7.6v of the 2S lipo. So I tried various voltage divider setups which didn't work either. I ended up using a common 5v regulator and the lights work fine again. I think I was maybe using too high resistor values in the divider and the 2812s didn't like it. At any rate, they apparently want a good regulated power source, and I wasn't giving it one before I switched over to using the regulator.

On the whole, going from 5-6v of the AA pack to 7.6v has made it a snappier mover. I tried it initially with the battery on the bench and found it would lift the back off the desk under hard break.

Next up is probably attaching a claw or drop mechanism and ultrasound sensor and then take on the Sparkfun autonomous ping-pong ball into cup challenge. I'll probably control it via wireless from a second on board micro-controller. The drop, ultrasound, and autonomous navigation micro (and additional battery) can all be put into a single "module" that I can then bolt to Tim. All the navigation micro needs to do is control the differential drive like a remote control would. This way, the existing micro etc on Tim doesn't change at all in order for the challenge to be accepted.


Jakub SteinerHigh Contrast Refresh

One of the major visual updates of the 3.16 release is the high contrast accessible theme. Both the shell and the toolkit have received attention in the HC department. One noteworthy aspect of the theme is the icons. To guarantee some decent amount of contrast of an icon against any background, back in GNOME 2 days, we solved it by “double stroking” every shape. The term double stroke comes from a special case, when a shape that was open, having only an outline, would get an additional inverted color outline. Most of the time it was a white outline of a black silhouette though.

Fuzzy doublestroke PNGs of the old HC theme

In the new world, we actually treat icons the same way we treat text. We can adjust the best contrast by controlling the color at runtime. We do this the same way we’ve done it for symbolic icons, using and embedded CSS stylesheet inside SVG icons. And in fact we are using the very same symbolic icons for the HC variant. You would be right arguing that there are specific needs for high contrast, but in reality majority of the double stroked icons in HC have already been direct conversions of their symbolic counterparts.

Crisp recolorable SVGs of the post 3.16 world

While centralized theme that overrides all application never seemed like a good idea, as the application icon is part of its identity and should be distributed and maintained alongside the actual app, the process to create a high contrast variant of an icon was extremely cumbersome and required quite a bit of effort. With the changes in place for both the toolkit and the shell, it’s far more reasonable to mandate applications to include a symbolic/high contrast variant of its app icon now. I’ll be spending my time transforming the existing double stroke assets into symbolic, but if you are an application author, please look into providing a scalable stencil variant of your app icon as well. Thank you!

Jakub SteinerAudi Quattro

Winter is definitelly losing its battle and last weekend we had some fun filming with my new folding Xu Gong v2 quad.

Audi Quattro from jimmac on Vimeo.

Jakub SteinerMaking of GNOME 3.14

The release of GNOME 3.14 is slowly approaching, so I stole some time from actual design work and created this little promo to show what goes into a release that probably isn’t immediately obvious (and a large portion of it doesn’t even make it in).

Watch on Youtube

I’d like to thank all the usual suspects that make the wheels spinning, Matthias, Benjamin and Allan in particular. The crown goes to Lapo Calamandrei though, because the amount of work he’s done on Adwaita this cycle will really benefit us in the next couple of releases. Thanks everyone, 3.14 will be a great release*!

* I keep saying that every release, but you simply feel it when you’re forced to log in to your “old” GNOME session rather than jhbuild.

Jakub SteinerOpen Flight Controllers

In my last multirotor themed entry I gave an insight into the magical world of flying cameras. I also gave a bit of a promise to write about the open source flight controllers that are out there. Here’s a few that I had the luck laying my hands on. We’ll start with some acro FCs, with a very differt purpose to the proprietary NAZA I started on. These are meant for fast and acrobatic flying, not for flying your expensive cameras on a stabilized gimbal. Keep in mind, I’m still fairly inexperienced so I don’t want to go into specifics and provide my settings just yet.

Blackout: Potsdam from jimmac on Vimeo.

CC3D

The best thing to be said about CC3D is that while being aimed at acro pilots, it’s relatively newbie friendly. The software is fairly straight forward. Getting the QT app built, set up the radio, tune motors and tweak gains is not going to make your eyes roll in the same way APM’s ground station would (more on that in a future post, maybe). The defaults are reasonable and help you achieve a maiden flight rather than a maiden crash. Updating to the latest firmware over the air is seamless.

Large number of receivers and connection methods is supported. Not only the classic PWM, or the more reasonable “one cable” CPPM method, but even Futaba proprietary SBUS can be used with CC3D. I’ve flown it with Futaba 8J, 14SG and even the Phantom radio (I actually quite like the compact receiver and the sticks on the TX feel good. Maybe it’s just that it’s something I’ve started on). As you’re gonna be flying proximity mostly, the range is not an issue, unless you’re dealing with external interference where a more robust frequency hopping radio would be safer. Without a GPS “break” or even a barometer, losing signal for even a second is fatal. It’s extremely nasty to get a perfect 5.8 video of your unresponsive quad plumetting to the ground :)

Overall a great board and software, and with so much competition, the board price has come down considerably recently. You can get non-genuine boards for around EUR20-25 on ebay. You can learn more about CC3D on openpilot website

Naze32

Sounding very similar to the popular DJI flight controller, this open board is built around the 32-bit STM32 processor. Theoretically it could be used to fly a bit larger kites with features like GPS hold. You’re not limited to the popular quad or hexa setups with it either, you can go really custom with defining your own motor mix. But you’d be stepping in the realm of only a few and I don’t think I’d trust my camera equipment to a platform that hasn’t been so extensively tested.

Initially I didn’t manage to get the cheap acro variant ideal for the minis, so I got the ‘bells & whistles’ edition, only missing the GPS module. The mag compass and air pressure barometer is already on the board, even though I found no use for altitude hold (BARO). You’ll still going to worry about momentum and wind so reaching for those goggles mid flight is still not going to be any less difficult than just having it stabilized.

If you don’t count some youtube videos, there’s not a lot of handholding for the naze32. People assume you have prior experience with similar FCs. There are multiple choices of configuration tools, but I went for the most straight forward one — a Google Chrome/Chromium Baseflight app. No compiling necessary. It’s quite bare bones, which I liked a lot. Reasonably styled few aligned boxes and CLI is way easier to navigate than the non-searchable table with bubblegum styling than what APM provides for example.

One advanced technique that caught my eye, as the typical process is super flimsy and tedious, is ESC calibration. To set the full range of speeds based on your radio, you usually need to make sure to provide power to the RX, and setting the top and bottom throttle leves to each esc. With this FC, you can actually set the throttle levels from the CLI, calibrating all ESCs at the same time. Very clever and super useful.

Another great feature is that you can have up to three setting profiles, depending on the load, wind conditions and the style you’re going for. Typically when flying proximity, between trees and under park benches, you want very responsive controls at the expense of fluid movement. On the other hand if you plan on going up and fast and pretend to be a plane (or a bird), you really need to have that fluid non-jittery movement. It’s not a setting you change mid-flight, using up a channel, but rather something you choose before arming.

To do it, you hold throttle down and yaw to the left and with the elevator/aileron stick you choose the mode. Left is for preset1, up is for preset 2 and right is for preset 3. Going down with the pitch will recalibrate the IMU. It’s good to solder on a buzzer that will help you find a lost craft when you trigger it with a spare channel (it can beep on low voltage too). The same buzzer will beep for selecting profiles as well.

As for actual flying characteristics, the raw rate mode, which is a little tricky to master (and I still have trouble flying 3rd person with it), is very solid. It feels like a lot larger craft, very stable. There’s also quite a feat in the form of HORI mode, where you get a stabilized flight (kite levels itself when you don’t provide controls), but no limit on the angle, so you’re still free to do flips. I can’t say I’ve masted PID tuning to really get the kind of control over the aircraft I would want. Regardless of tweaking the control characteristics, you won’t get a nice fluid video flying HORI or ANGLE mode, as the self leveling will always do a little jitter to compensate for wind or inaccurate gyro readings which seems to not be there when flying rate. Stabilizing the footage in post gets rid of it mostly, but not perfectly:

Minihquad in Deutschland

You can get the plain acro version for about EUR30 which is an incredible value for a solid FC like this. I have a lot of practice ahead to truly get to that fluid fast plane-like flight that drew me into these miniquads. Check some of these masters below:

APM and Sparky next time. Or perhaps you’d be more interested in the video link instead first? Let me know in the comments.

Update: Turns out NAZE32 supports many serial protocols apart form CPPM, such as Futaba SBUS and Graupner SUMD.

Pravin SatputeFUDCon APAC 2015 Thanks to community for huge response for CFP

    I was interested in writing this blog post couple of weeks back but was away for Fossasia 2015 and them some family events. I know its never late to say thanks you :)

    We started accepting CFP on 9th Feb 2015 and decided deadline for submitting papers 9th March. Earlier i was bit doubtful regarding how many submission we might get. Specifically when we don't have great numbers of Fedora users around.  At one moment even thought "Might  be, we will need to extend CFP by a week". Started marketing activities for CFP.

    Started by sending an email on Fedora mailing lists including India, Ambassadors, Devel, Announce and everywhere possible and requested to forward further to relevant mailing lists.

    Prepared FudCon-outreach-list  and listed down all the FOSS related organizations and communities, interested in Fedora and decided to sent them email. Do go through this list, it is great resource for one planning conference around FOSS.

    Its time consuming task to send email to all the communities, so decided whoever has contacts or communicated earlier with any list, just start sending CFP email. Went very well.

    During discussion we also thought its good to contact IT companies interested in FOSS. Talked with friends working with them and requested to forward CFP to there organizations.

    We were looking for flyer for CFP from the day 1 CFP open but it was pending on logo for FUDCon APAC 2015. During the time we got logo and just in time i.e. last week we got our awesome flyer for CFP ready !! Though it was in last week but it helped to spread the message. Got almost 50% submissions in last week.



Specifically wanted to thanks following supporters:
  1. Helped in prepared CFP related contents and Flyers.
  2. Helped in filling up missing bits in outreach and also helped in completing task. 
  3. Forwarded FUDCon CFP related email to respective organizations.
  4. Sharing FUDCon CFP related post through social media.  Twitter, Facebook and Linkedin.
  5. Bloggers and FedoraMagazine writers AND
  6. Last but not the list the one who actually submitted sessions :)

    I know most of you already know, still let me write it again. We got total 140 paper submissions. This is nice number specifically when we are having available slots only around 40-50 and was expecting around 60-70 talks.

    Many many congratulations to FUDCon APAC pune 2015 outreach and marketing group for achieving first target.

    Now lets gear up again for our next target to marketing actual event. We will have speakers list and schedule ready most probably by next week. We will have some meeting to prepare plan for event marketing. Excited to work with you all again for our next milestone. :)

CraftingType workshopsMonotype type designer Dan Rhatigan on his type tattoos (9 of...



Monotype type designer Dan Rhatigan on his type tattoos (9 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

CraftingType workshopsMonotype type designer Dan Rhatigan on the day to day of a type...



Monotype type designer Dan Rhatigan on the day to day of a type designer at Monotype (8 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

Caolán McNamaragtk3 vclplug, some more gesture support

Now gtk3 long-press support to go with swipe

With the demo that a long-press in presentation mode will bring up the context menu for switching between using the pointer for draw-on-slide vs normal slide navigation.

Caolán McNamaragtk3 vclplug, basic gesture support

gtk3's gesture support is the functionality I'm actually interested in, so now that presentations work in full-screen mode, I've added basic GtkGestureSwipe support to LibreOffice (for gtk3 >= 3.14) and hooked it up the slideshow, so now swiping towards the left advances to the next slide, to the right for the the previous slide.

Pravin SatputeMy activities at FOSSASIA 2015

This blog in continuation to my earlier blog on "FOSSASIA 2015 Highlights noticed by me"

Group Photo

Talk on Glibc Unicode 7 update:

        Glibc is an important component of operating systems. Recently we upgraded Glibc Unicode support from 5.1 to 7.0. This was major update after 4-5 years. It usually remains unnoticed, i wanted to highlight. Even though i work for redhat still it took around 7-8 month to get patch finally in glibc upstream. Around 25-30 audience was there in talk and it was well taken. Slides for my talks are available at slideshare.

Fedora:

        We kept Fedora DVD's and stickers At Red Hat booth. Was at booth 2-3pm first day and distributed dvd's to attendees. Also got a chance to meet Harish, Izhar, Prima Yogi, Aditya patawari, and Kushal. I proposed Fedora badge for people attending fossasia and asked participant to add name in piratepad.  Unfortunately it got rejected due to not planned in advance :(


        Fedora Breakout session. This was planned by Praveen Kumar, we gathered there, not many attendees were there but we got a chance to interact with "Hamara Linux" representative Aarti Dwivedi and Samyak Datta,LifeNectar explained them regarding Fedora, Fedora.Next and also on widely used Fedora remixes.

FUDCon APAC 2015:

        Being one of the member of organizing committee thought its good time to discuss on FUDCon APAC 2015 with people mostly participate remotely. We planned BoF, decided to do it in lunch time since most of the time people were busy doing other stuff. Updated group on number of papers received, planning happened till date, BarCamp style track, lightening talks.


Represented Red Hat Globalization team:

        Working in this domain almost 8+years and worked on almost all complex scripts including Indic, Arabic.  APAC is more characterized by non-english speaking countries and fossasia was the perfect place to interact with users for globalization needs. Interacted with couple of people for what languages they used on Fedora.


I attended almost all talks in OpenTech track and provided feedback to speakers. Had a good time interacting with most of the attendees over the lunch, socializing events. We had a nice hangout of brewerkz with Anish, Kushal, Praveen Kumar, Lennart Poettering and Rémi Denis-Courmont. 

Thank you fossasia organizers Hong Phuc Dang, Mario Behling, Harish Pillay, Roland Turner, Justin Lee and Darwin Gosal looking forward to attend next year as well. :)

CraftingType workshopsMonotype type designer Dan Rhatigan on the elements of type...



Monotype type designer Dan Rhatigan on the elements of type design (7 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

Pravin SatputeLohit Devanagari 2.95.1 release

Done with 2.95.1 release. This release in continuation with 2.95.0 release, basically to resolves issues raised in it ;)

Noticed issue while Fedora 22 testing from Bhushan. While analyzing it found it is due to autohinting in Lohit fontconfig file.

We are now using ttfautohint while building ttf file and on this hinted font again using autohint. This does not working very nice as reported in bugzilla.

From bug #1203996
There was couple of more issues i noticed on Fedora 22. These all are fixed now. Soon building 2.95.1 version for Fedora 22. Will be available in Fedora 22 Beta release.

Announced in lohit-devel list
 

CraftingType workshopsMonotype type designer Dan Rhatigan on what brands want from...



Monotype type designer Dan Rhatigan on what brands want from fonts (6 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

CraftingType workshopsMonotype type designer Dan Rhatigan on web & screen fonts (5...



Monotype type designer Dan Rhatigan on web & screen fonts (5 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

Caolán McNamaragtk3 vclplug, full-screen presentation canvas mode

Newly added simple support to the gtk3 vclplug for "canvas" support which is the thing we draw onto for presentations. Which means the gtk3 vclplug now supports full screen presentations. Which required a whole massive pile of reorganization of the existing canvas backends to move them from their own per-platform concept in canvas to the per-desktop concept in vcl.

So now rather than having only one cairo canvas backend based on the xlib apis which is for "Linux" we have a cairo canvas for each vcl plug. The old school xlib one is moved from inside its #ifdef LINUX in canvas to the shared base of the gtk2, kde, etc backends in vcl, and there is now a new one for gtk3

Presumably there are lots of performance gains to be made to the new canvas backend seeing as I'm just invalidating the whole slide window when the canvas declares that it's flush time but slides appear to appear instantaneously for me and fly ins and move around a patch effects are smooth even in -O0 debug mode so I'll hold back on any optimizations efforts for now.

CraftingType workshopsMonotype type designer Dan Rhatigan on font shelf-life (4 of...



Monotype type designer Dan Rhatigan on font shelf-life (4 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

CraftingType workshopsMonotype type designer Dan Rhatigan on making a typeface for...



Monotype type designer Dan Rhatigan on making a typeface for Dominos Pizza (3 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

CraftingType workshopsMonotype type designer Dan Rhatigan, spotting type in use (2 of...



Monotype type designer Dan Rhatigan, spotting type in use (2 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

CraftingType workshopsMonotype type designer Dan Rhatigan on his typical day (1 of...



Monotype type designer Dan Rhatigan on his typical day (1 of 9)

The Crafting Type workshop is coming to these cities soon:

Portland, March 27, 28, 29 →

Boston, April 17, 18, 19 →

Learn more at craftingtype.com

Caolán McNamaragtk3 vclplug,

I've been hacking the gtk3 vclplug for LibreOffice recently, here's the before image after scrolling up and down a few times. UI font not rendered the same as the rest of the desktop, bit droppings everywhere, text missing from style listbox, mouse-wheel non-functional
https://wiki.documentfoundation.org/images/f/f7/Sad-gtk-4-4.png

 Here's today's effort. Correct UI font, scrolling just works, mouse-wheel functional, no bit droppings.


https://wiki.documentfoundation.org/images/3/31/Happy-gtk-4-5.png

After making it possible to render with cairo to our basebmp surface initially for the purposes of rendering text, I tweaked things so that instead of re-rendering everything in the affected area on a "draw" signal we do our initial render into the underlying basebmp surface on resize events and then trust that our internally triggered paints will keep that basebmp up to date and gtk_widget_queue_draw_area those areas as they are modified in basebmp and just blit that basebmp to the gtk3 cairo surface on the resulting gtk_widget_queue_draw_area- triggered "draw". This is pretty much what we do for the MacOSX backend.

The basebmp is now cairo-compatible so the actual LibreOffice->Gtk3 draw becomes a trivial direct paint to the requested area in the gtk surface from our basebmp surface

With our cairo-compatible basebmp surface the gtk3 native rendering stuff for drawing the buttons and menus etc can then render directly into that basebmp at the desired locations removing a pile of temporary surfaces, conversion code and bounds-checking hackery.

Further under the hood however the headless svp plug that the gtk3 inherits from had a pair of major ultra-frustrating bugs which meant that while it looked good in theory, in practice it still was epically failing wrt bit dropping in practice. Now solved are the two underlying clipping-related bugs. One where an optimization effort would trigger creating an overly clipped region, and another where attempts to copy from the surface were clipped out by the clip region.

Still got some glitches in the impress sidebar and of course the above theming engine is still missing a pile of stuff and slide-show/canvas mode needs implementing, but I'm heartened. Its not complete, but its now less traffic accident and more building site.

Pravin SatputeFOSSASIA 2015 Highlights noticed by me

This blog i am writing specifically to point out some good points i noticed during the fossasia 2015 conference. Feel free to add missing in comments section :)

  1. Awesome location Singapore !! I am sure no one will object :)
  2. On the first day Tweets were displayed in the hall. Fossasia is not one who started it. But this was the my first conference where i saw it. It is good thing where audience can share what going in there mind w.r.t. ongoing talk  with other audience. It was also motivating audience to tweets, so good trick to make audience active ;)
  3. It was good first day with no parallel talks. I liked the approach, starting parallel tracks from day first sometime start splitting audience. Talks on first day were more generic. People also got a chance to know, how many people around and started planning hacking activity for coming days.
  4. Talk from Dr. Vivian Balakrishnan, Minister of Singapore was well taken by audience. Very few such ministers around who understand technology so well.  
  5. All food vessels at the lunch counter got empty in some time. It proves how tasty the food was. :)
  6. Second day started with 5 parallel tracks. OpenTech, Web Technologies, Python, Mozilla and DevOps. I attended almost all talks in OpenTech Track. Even though there was 5 tracks each track got sufficient audience. 
  7. Before lunch we took group photo. It was fun, whenever we were thinking all are in now, one new batch of people were joining and then again trying to accommodate all frame. Thanks to Michael Cannon for photo.
  8. One of the good points was almost all domains people were present. Even we had some talks related to Open Source in Healthcare AutistConnect, LifeNectar and OpenMRS.
  9. Lightening talks generally does not get scheduled but in fossasia those were scheduled. I will say it as a good move. First it gave speakers recognition and also might have given them chance to get funding for conference. Second since it was scheduled it happened in well planned manner. Some audience missed few talks due to minor schedule change in lightening talks. Still i will say lightening talks made good impact. Specifically it worked like person introduced his topic and requested audience to join breakout session for further discussions.
  10. Plenty of rooms were available for breakout sessions.
  11. Each day was followed by some social event. Going to remember social event at Labrador park seaside Singapore BBQ definitely for some more time. Did not attended other days social event since some other plans.
  12. I think due to huge success of fossasia2015 organizers decided to choose same location for next year fossasia as well.
  13. Number of booths were available, Dron demonstration was also interesting. Mozilla, MySql, 3D printer, Red Hat.
I had almost dropped my plan to attend conference, thanks to Harish. He gave opportunity to attend conference the conference. I am going to write one more blog on my activities at fossasia, it will be bit bigger than this, Stay tuned :)

CraftingType workshopsVideo: Talking Design Giving and receiving type design feedback...



Video: Talking Design Giving and receiving type design feedback with Prof Gerry Leonidas

Ben MartinGoogle Breakpad and the post crash experience

Google Breakpad has many components to it, but at the basic level it lets you capture information at the time a crash occurs and upload that to the net. A really cute part of Breakpad is that the binary doesn't need to have the debug symbols in it, you don't even need to have them on the client machine at any location. When you build version $githash then you use a breakpad tool to copy out the debug symbols into separate files. When the user discovers a crash they upload a minidump file to a server of your selecting. Then you can combine the extracted symbols from build time and the minidump file to generate a backtrace with line number information. So software users don't have to know about gdb or lldb or whatnot and how to make a backtrace and where to paste it.



I recently updated FontForge's use of breakpad to use a small server on localhost to report the bug. The application dmg file for fontforge will soon also include the extracted symbols for the build. By telling breakpad to use a local server, that server can lookup the symbols that are shipped and generate a human readable backtrace with line number information. Because its also a web interface and running locally, it can spawn a browser on itself. So instead of getting the Mac dialog supplied by the osx crash reporter app telling you that there was a crash, you get a web page telling you the same thing. But the web page can use jQuery/Bootstrap (or $ui tool of choice) and ask what the user was doing and offer many ways to proceed from there depending on how the user wants to report things. The https://gist.github.com/ site can be used to report without any login or user accounts. It's also rather handy as a place to checking larger backtraces that might be, maybe, 50-100kb.

But once you can upload to gist, you can get a http and other URL links to the new gist. So it makes sense from there to offer to make a new github issue for the user too. And in that new issue include the link to the gist page so that developers can get at the full backtrace. It turns out that you can do this last part, which requires user login to github, by redirecting to github/.../issues/new and passing title and body GET parameters. While there is a github API, to report a new issue using it you would need to do OAuth first. But in the libre world it's not so simple to have a location to store the OAuth secure token for next time around. So the GET redirect trick nicely gets around that situation.


For those interested in this, the gist upload and callback to subsequently make a github issue are both available. The Google Breakpad hands over the minidump to a POST method which then massages the minidump into the backtrace and spawns a browser on itself. The GET serves up all the html, css, js, and other assets to the browser and that served html/js is what I link to at the start of the paragraph which is where the actual upload/reporting of the backtrace takes place.

The only thing left to do is to respond to the backtraces that come in and everybody gets a more stable FontForge out of the deal. It might be interesting to send off reports to a Socorro server too so that statistics month on month can be easily available.

Footnotes