Planet Open Fonts

Pravin SatputeMinutes of G11N meeting 2015/11/25

Though i dont do this often. Adding meeting minutes in blog today. :)

#fedora-meeting: g11n

Meeting started by pravins at 06:00:42 UTC (full logs).

Meeting summary

  1. agenda and roll call (pravins, 06:00:56)
    1., 06:00:57)
  2. Upcoming schedule (pravins, 06:02:18)
    1. 2016-01-12 Change Checkpoint: Proposal submission deadline (System Wide Changes) (pravins, 06:02:18)
    2. not scheduled yet Side Tag Builds Deadline (pravins, 06:02:18)
    3. not required Mass Rebuild (pravins, 06:02:18)
    4. 2016-02-02 Branch Fedora 24 from Rawhide (Rawhide becomes future F25) (pravins, 06:02:18)
    5. 2016-02-16 Alpha Freeze (*) (pravins, 06:02:19)
    6. 2016-02-16 Software String Freeze(pravins, 06:02:21)
    7. 2016-02-16 Change Checkpoint: Completion deadline (testable) (pravins, 06:02:23)
    8. 2016-02-16 Bodhi activation point(pravins, 06:02:25)
  3. Outstanding task (pravins, 06:03:46)
    1. #36: gnome redesign plans for control-center Region and Languages (anishpatil) (pravins, 06:03:47)
    2. ACTION: anish_ to update bug report to disable xkb layouts for Indian language in gnome. (pravins, 06:09:01)
    3., 06:09:07)
  4. New topics (pravins, 06:09:43)
    1. #43: G11N FAD in 2015 (pravins) (pravins, 06:09:52)
    2., 06:09:52)
    3., 06:11:56)
    4. ACTION: All FAD attendees to upload report/summaries blog link on ticket #43(pravins, 06:13:55)
    5. ACTION: pravins to ask all FAD attendees for summaries and reports. (pravins, 06:14:11)
    6. paragan expense claim is almost done.(pravins, 06:17:40)
    7. anish_ expense claim approved and moved to Ruth for reimbursement. (pravins, 06:17:58)
    8. mfabian will complete event reports and expense claim today. (pravins, 06:18:45)
    9. No report and expense claims from Ani and Noriko yet. (pravins, 06:19:40)
    10. ACTION: pravins to work on Collaborating summary post on G11N Fedora activities day. (pravins, 06:20:37)
    11. #57: Fedora 24 change planing (pravins)(pravins, 06:21:17)
    12., 06:21:21)
    13. IDEA: String Breakage monitoring (Jens, Akira) (pravins, 06:22:13)
    14. IDEA: Merge IBus fbterm into ibus core (Fujiwara) (pravins, 06:23:10)
    15. Confusion should it be merged into IBus or simply fork since not active upstream. (pravins, 06:23:24)
    16., 06:25:37)
    17. ACTION: fujiwarat to set deadline for "Merge IBus fbterm into ibus core" (pravins, 06:28:11)
    18., 06:32:04)
    19. IDEA: ibus-typing-booster: AltGr support (mfabian)(pravins, 06:32:29)
    20. IDEA: Pinyin/zhuyin (epico) (pravins, 06:32:39)
    21. IDEA: Automation of langpack LiveCD ( paragan ) (pravins, 06:33:17)
    22. IDEA: PoC of NextGen G11n workflow (Jens/Zanata?) (pravins, 06:33:21)
    23. IDEA: ITS for Gnome ( ueno ) (pravins, 06:33:46)
    24., 06:37:28)
    25. IDEA: Automatic testing ( tagoh___) (pravins, 06:37:51)
    26. IDEA: Description support of the configuration in fontconfig ( tagoh___) (pravins, 06:38:07)
    27. ACTION: paragan to create ticket for Automation of langpack LiveCD for better tracking status. (pravins, 06:41:43)
    28. ACTION: pravins to drop email on i18n list with all missed idea for F24. (pravins, 06:43:20)
    29. #58: Prioritizing bugs for Fedora 24 release (pravins) (pravins, 06:45:33)
    30., 06:45:34)
    31. All open bugs are available on (pravins, 06:47:22)
    32. Rawhide bugs:, 06:48:23)
    33. Fedora 23 bugs, 06:49:04)
    34., 06:49:13)
    35. ACTION: Everyone to select few bugs from Bug list for Fedora 24 development cycle. (pravins, 06:50:49)
    36. ACTION: pravins to create Wiki for listing bugs for Fedora 24. (pravins, 06:53:43)
    37. #56: Fedora 21 EOL Bugs traiging (pravins ) (pravins, 06:53:59)
    38., 06:53:59)
    39., 06:54:47)
    40. ACTION: pravins to drop email on i18n list with open bugs (pravins, 07:00:34)
    41. ACTION: paragan ueno epico tagoh___ to triage open bugs for Fedora 21. (pravins, 07:01:13)
    42. #15: Questions on Translation work flow for Fedora Website (pravins, 07:01:38)
    43., 07:01:38)
    44. ACTION: resolve "Questions on Translation work flow for Fedora Website" by Next week G11N meeting. (pravins, 07:04:51)
  5. Open Floor (pravins, 07:05:02)

Meeting ended at 07:09:04 UTC (full logs).

Action items

  1. anish_ to update bug report to disable xkb layouts for Indian language in gnome.
  2. All FAD attendees to upload report/summaries blog link on ticket #43
  3. pravins to ask all FAD attendees for summaries and reports.
  4. pravins to work on Collaborating summary post on G11N Fedora activities day.
  5. fujiwarat to set deadline for "Merge IBus fbterm into ibus core"
  6. paragan to create ticket for Automation of langpack LiveCD for better tracking status.
  7. pravins to drop email on i18n list with all missed idea for F24.
  8. Everyone to select few bugs from Bug list for Fedora 24 development cycle.
  9. pravins to create Wiki for listing bugs for Fedora 24.
  10. pravins to drop email on i18n list with open bugs
  11. paragan ueno epico tagoh___ to triage open bugs for Fedora 21.
  12. resolve "Questions on Translation work flow for Fedora Website" by Next week G11N meeting.

Action items, by person

  1. anish_
    1. anish_ to update bug report to disable xkb layouts for Indian language in gnome.
  2. epico
    1. paragan ueno epico tagoh___ to triage open bugs for Fedora 21.
  3. fujiwarat
    1. fujiwarat to set deadline for "Merge IBus fbterm into ibus core"
  4. paragan
    1. paragan to create ticket for Automation of langpack LiveCD for better tracking status.
    2. paragan ueno epico tagoh___ to triage open bugs for Fedora 21.
  5. pravins
    1. pravins to ask all FAD attendees for summaries and reports.
    2. pravins to work on Collaborating summary post on G11N Fedora activities day.
    3. pravins to drop email on i18n list with all missed idea for F24.
    4. pravins to create Wiki for listing bugs for Fedora 24.
    5. pravins to drop email on i18n list with open bugs
  6. ueno
    1. paragan ueno epico tagoh___ to triage open bugs for Fedora 21.
    1. All FAD attendees to upload report/summaries blog link on ticket #43
    2. Everyone to select few bugs from Bug list for Fedora 24 development cycle.
    3. resolve "Questions on Translation work flow for Fedora Website" by Next week G11N meeting.

Generated by MeetBot 0.1.4.

Caolán McNamaraBetter polygon rendering in LibreOffice's Gtk3 Support

Above is how LibreOffice's "svp" backend rendered rotated text outlines in chart where the text is represented by polygon paths. Because the gtk3 backend is based on that svp backend that's what you got with the gtk3 support enabled.

After today's work above is how the svp backend now renders those paths when rendering to a cairo-compatible surface such as the gtk3 support provides.

If we mandate that "svp" only operates on cairo compatible surfaces, then we can get this niceness into android and online too, and can ditch our non-cairo text rendering code paths.

Pravin SatputeGlobalization Fedora activity day-3 report

    Third and last day was more action packed. As per schedule we were planning to complete all activities by Lunch and have presentations from participants on completed activity post lunch session. Then F24 planning, FAD closing, followed by F23 release party. It went as follows.

    I worked more on cleanup of Globalization governance group proposal and also worked bit more on Wiki cleanup.

    Same time other activities were going on like Determining list of important packages for Fedora. While checking Fedora packages in Zanata instance, we started how we can better group packages in Zanata. This discussion lasted for long time. Its really complicated presently.

    Situation is: Ideally should have only packages from Fedora repos. But some package maintainers in Fedora also hold/lead the upstream of same packages. They decided to keep upstream repo itself in
    Branch confusion: Upstream packages has only master branch and Fedora packages has F22, F23, master etc.. We give more priority to active Fedora branch i.e. F23.
    Release: Upstream packages follows different schedule than Fedora. Contributing in master does not guarantee it will get included in Fedora XX release.

    And how about packages only has upstream in but those are not in Fedora. I hope, no such packages are there.

    This discussion lasted for around hour, almost everyone jumped in. We came up with new structure and thought lets get back to other imp. task.
    We discussed on improving String freeze and Translation deadline for Fedora. We had good discussion but later while thinking how many packages breaks string freeze, only name that came up was Anaconda. We thought good to track it and also there is already plan to have some script which can automatically find string breaks. It will solve the issue. I really felt this discussion was not possible on IRC and actual meeting help to understand most of the complexities.

    It was lunch time. Sandwiches were there. We all braked for lunch but still few people were discussing and working.

    As per schedule after lunch everyone was suppose to present hackathon summary and then start Fedora 23 release party. But....

    We saw everyone was so involved in work and actually were trying to give finishing touch or wanted to discuss more. We decided lets extend it some more time. Rather than starting summary sessions At 1pm we started those around 3:30pm.

    Finally summary session started :) We followed order given on G11N FAD Wiki page. Format was, what have you been working in last 2 days, outcome and plans for future. I am expecting more detailed about this in in individual blog and mostly will add these things in community blog of Fedora.

    Everyone presented and it was around 5:00pm, We had still few topic pending i.e. Fedora 24 planning and official FAD closing. Jens insisted for F24 planning and we decided to drop Fedora 23 release party (I had prepared presentation for F23 features :( )

    But decision was worth, we got an excellent list for Fedora 24 plan. Planning in face to face meeting and planning on IRC is completely different experience. Sometime in IRC only few people speak but here everyone was so into it. List is already in summary document. Anyway its not bad to Celebrate Fedora 23 by doing development plan for Fedora 24 release, so hats off to everyone :)

    Then we started FAD closing session and it was around 6pm already, i would like to thank everyone since on last day most of the people want to leave early due to either travelling or some other plan but here everyone was there to see official closing of FAD. It shows success.

    In last Fedora G11N meeting, we decided to collaborate on Fedora community blog post specific on G11N FAD. Hoping will able to complete it soon. Will upload more photos later !! :)

Caolán McNamaraInsert Special Character in Spelling Dialog

LibreOffice 5.1 spelling dialog now has a little toolbar to enable inserting special characters into the spelling editing widget. Also Added paste, so the insert icon isn't lonely.

Pravin SatputeGlobalization FAD 2nd day report

    Took more time to write this than expected, thanks for back to back new activities for this. :)

    As per predictions it was raining on this day. Temperature dropped little bit more. Thank to Jens for already mentioning this, most of the people were with umbrella's and for few hotel provided them.

    Second day started with FPL's hangout. Meeting room speakers were not doing good join, so we decided just to project hangout on screen and dial in individually for listening and speaking.

FPL Matthew on Hangout addressing FAD group !!

    Hangout went very well with Matthew explaining, high priority items like Fedora Atomic and its importance with the rise of competition. Most of the developers are still working on core development and not that much concerned on G11N part yet. Suggested for us to look into it. Me briefly mentioned on activities we are doing and who are present. Session ended with Q&A with couple of questions like i.e. how can APAC people get funding for flock :) and Can Zanata team get more support from Fedora Infra team. Nice and Quick hangout helped to set up of remaining hackathon day. Its always bit run for everyone of us to manage with different timezones, we succeeded this time as well, thanks to Matthew for this :)

    First day discussion we felt Governance for G11N is missing and thought lets talk on it and sort out most of the things. Ok, background to this. There was Fedora localization steering committee once upon a time and they were resolving most of the issues related with L10N. But somehow its stopped.

Planned structure for G11N Governance group
 In present scenario there are around 81 language communities. Managing them and planning for this huge effort need some committee. We prepared our first draft and decided to present this to council. Jens mentioned one major point, whether it should be Steering committee or Working group. Decided to follow up on this next day.


Ueno'san, Peng Wu and Mike during hackathon

 Same time other parallel things were happening including Language Spins, Automated testing, IBus improvements and Glibc sub-packaging.

Bento Box

      Second day lunch was Bento box and hats of to Japanese for sense of colour combination and variety of food. Lunch was simply awesome.

      We have to vacant big meeting room due to Quarterly call. So we moved to breakout room

Noriko, Alex, Carlso and Ani during hackatohn in breakout room

Parag, Anish, Peng Wu and Ueno'san

Mike and Jens in Breakout room

     For Red Hat Forum 2015 Jim Whitehurst was in Tokyo and had meeting during same time in office. After his meeting he gave some time for signing copies of "The Open Organization" for RH employees :)

Most of the Red Hat FAD members used the opportunity and signed there copy. After couple of members signed book from Jim, Jim started noticing us saying, "So you are Fedora guy ;)

It was good to make some impact about Fedora activities. We took group photo with Jim :)

Please Consider Alex in this image - On Camera
    Changing meeting room and then again meet with Jim little bit distracted FAD schedule but i think its great to meet CEO. !!

    Around 4pm we again gathered and started working hard on hackathon topics. Continued few discussions plus Zanata survey result summary discussions. We were thinking to have Hackathon summary for the day session but we dropped planned since everyone was involved in hacking some stuff and not wanted to disturb them.

Alex, Ani and Carlos - Zanata survey analysis

    Second day was FAD social event day. It was dinner @ Indian Restaurant in Japan. Was bit frustrating for Indian attendees to eat Indian food in Japan. But Fujiwara'san convinced it is not that authentic Indian.

    It was excellent place, we grouped together, laughed, shouted, had food. Took so many photographs. ;)  Food style was Indian but flavours were Japanese. Unique combination ;)

  Overall great day with nice events !!

Pravin SatputeGlobalization Fedora Activity Day 1 Report

 Dunno how many of you know but Just in time was invented in Japan. Same way FAD day 1 started just in time as planned :) Everyone was at meeting points at the time. Information about G11N FAD available at Wiki.

It was nice feeling to meet team members we usually chat on IRC. Carlos and Alex was joining from Open Stack summit to G11N FAD but still were looking very fresh. I think one of the reason behind is Tokyo is such an excellent city keeps you fresh :)

One more members joined us from Japan localization group Tomoyuki Kato
for FAD.

Jens started with welcoming all and provided some basic information regarding FAD and we had quick round of  introductions. Everyone joined #fedora-g11n

Sundeep was trying to join remotely but was difficult to arrange stuff remotely. So later enable telephone line and asked to join there.

Then i started with Fedora Globalization status and discussion topic. Slides are available at Slideshare We had some good discussion at the end of session regarding how other language communities manage things and what is misisng in Fedora. Most of us agreed for need of Fedora Governance for G11N, Easy to start guide for L10N and improving motivation factors for L10N contributors including Badges and reasonable budget for organizing sprints.

Later Noriko and Ani presentation on L10N status and discussion. Briefly touched to following points
  • Benefits for being Fedora L10N members
  • History of L10N.
  • Difficulties in finding where to start.
  • Wiki improvements/cleanup needed urgently.
  • Startup guide in wiki. Single page for all contributors.
  • Confusion in Zanata URL
  • Present as a G11N rather than L10N in Fedora groups now.
  • Lack of Fedora l10n resources and leadership
    • eg Mozilla and Open Stack has full-time person working on l10n coordination
  • Need to improve Fedora release schedule to get more language L10N.
Discussions were going on but we thought to good have further discussions in hackathon session.

Then Akira Tagoh took over and started I18N status and discussion session. Slides are here. He touched most of the hot topic on i18n including recent features, meetings, what are the important part in i18n. Later we had questions about how to propose new change proposal in Fedora, Bugzilla status.
Meanwhile Pizza's arrived, so being organizer plus key g11n members Tagoh-san need to run away so Jens took over.

Later we took break for lunch and had discussions on Fedora events and happening in FUDCon's.

One of the interesting thing was Khmer language sprint was active in Cambodia same time and gnokii and team was raising few issues on #fedora-g11n. Jens and gnokii planned to have quick hangout session.

Lunch after Alex presented on Zanata updates. He shown very interesting slides with lots of statistics and graphs. Participants asked for few more statistics.
Some of the discussions topics were
  • How’s contributor licensing works with Zanata?
  • All Fedora not got same branch name.
  • How to get release based statistics for Fedora.
  • Migrate bugzilla to JIRA. Create JIRA with tag Fedora.
  • Mobile support required for L10N of Japanese.
Then we started with our hackathon. We had so many important topics and were just thinking from where to start. Jens and Tagoh'san had created nice spreadsheet for schedule earlier but same time we were not much interested to force participants and be flexible with schedule. We split up into 5 groups and started hackathon.

Around 3 hours worked on various topics. I think lets each group write some blog post on things they hacked later.

At 5pm we had hangout with Khmer language sprint team. It was great one big group doing hangout with other group working on G11N stuff :)
gnokii, botreynisa and kuylim did good work on improving Khmer language localization. Happy to see they are working with objective to make Fedora 24 100% translated in Khmer language. So big +1 for it !!

Later we had brief summary from each members regarding how day went and what they hacked on during day.

Overall good first day. Tomorrow except Hangout with FPL we are going to hackathon whole day, so expecting even more productive day. Almost 00:37 here at Japan now, ohh FAD day 2 started already ;)

Stay tuned !!

 G11N FAD 2015

Pravin SatputeHow to enable Khmer language input method with ibus-typing-booster in Fedora 22/23

Tomorrow we have translation sprint for Khmer language. Thought good to
 write this blog, may be help to try ibus-typing-booster during sprint.

Step zero: Install hunspell-km and ibus-typing-booster
$dnf install hunspell-km ibus-typing-booster -y

Step one:
Click on Setting

Step two: Click on Keyboard
Step three: Click on Input sources
Step four: Click on "+"
Step five: Search for Khmer and then click on Central khmer
Step eight: Select hunspell

Setp nine: Open any application - gedit and selct from panel Central-khmer
Hope this help. I did not saw typing booster ime in khmer langugae though but may be we dont have m17n map that is reason.

Need to explore more. Wrote this blog in very short time, may be will improve more later.

Ben MartinESP8266 and a few pins

The new Arduino 1.6.x IDE makes it fairly simple to use the ESP8266 modules. I have been meaning to play around with a some open window detectors for a while now. I notice two dedicated GPIO pins on the ESP8266, which is one more than I really need. So I threw in an led which turns on when the window is open. Nothing like local, direct feedback that the device has detected the state of affairs. The reed switch is attached on an interrupt so as soon as the magnet gets too far away the light shines.

I will probably fold and make the interrupt set a flag so that the main loop can perform an http GET to tell the server as soon as it knows when a state has changed.

Probably the main annoying thing I've still got is that during boot it seems the state of both the gpio pins matters. So if the reed switch is closed when you first spply power then the esp goes into some stall state.

It will be interesting to see how easy OTA firmware updates are for the device.

Pravin SatputeFive days to go for first ever Globalization Fedora activity day

Tokyo streets at night

I am sure most of you must be aware regarding G11N FAD happening from 1st to 3rd Nov in Tokyo Japan.

This blog is specifically to highlight present status of FAD.
  •  All attendees travel and accommodation stuff done. This was most challenging part since Tokyo is very costly and managing everything in budget was difficult. Thanks to all attendees to agree for partial subsidy.
  • Tickets filed for subsidy requests.
  • VISA's done.
  • Venue room bookings done.
  • Schedule is almost done. Earlier we were planning to cover all topics in session type manner. Jens suggested covering it through hackathon will be more productive. Everyone agreed and now we have almost 50-60% time specifically for hackathon. 
  • Lunch arrangement almost done.
  • Social Event - Dinner place not decided yet.
  • Fedora 23 release party. Had couple of issues for this but looks ok. 1st is Fedora 23 schedule slip by one week. Still we are lucky planning this exactly on 3rd Nov. :) 2nd Waiting for confirmation from Japanese Ambassador David (Dramsey). Earlier got positive response from him so expecting he will be there.
We are going to work on some cool stuff
  • Glibc locales sub-packaing
  • Automated testing for i18n and l10n.
  • Localizing Fedora magazine articles.
  • Review on recent Fedora Zanata users survey. 
  • ...and much more 
I am sure we will able to complete some of these.

What should other do?
 If you have any queries or nice idea on G11N side, feel free to send email to g11n AT lists DOT fedoraproject DOT org

Remote attendees: If everything goes well, one can simply dial in and listen all the presentation. Though remote participating in hackathon will be difficult but will try to communicate through irc. We already have couple of Remote participants.

For more information stay tuned on #fedora-g11n and g11n AT lists DOT fedoraproject DOT org

Cheers !!

Caolán McNamarafinding UI crashes by fuzzing input events with american fuzzy lop

As mentioned previously I've been experimenting using afl as a fuzzing engine to fuzz a stream of serialized keyboard events which LibreOffice reads and dispatches.

Performance is still pretty poor, but by tweaking our headless mode to allow dialogs to be created, then using that headless mode for eventtesting and then hacking out the actual rendering of the UI to the headless backend I've got something that performs reasonably well enough to enable me to set a far higher limit of 50 input events per cycle and start to discover real bugs in impress.
  1. 5.1 only crash in impress sidebar under some circumstances
  2. null marked obj still in impress mark cache
  3. another null deref in impress sidebar panels
  4. crash in impress if you exit while the annotation window is open
  5. divide by zero in an impress sidebar panel
  6. another annotation window null deref issue
  7. crash on sending a keystroke to an empty impress page list widget
  8. missing dispose on annotation windows
  9. missing dispose on alive by unshown panels
  10. crash if frame is destroyed before keystroke gets to it
  11. crash if you close impress main frame while slideshow is running

all of which is encouraging, though some of these are possibly very unlikely in real world use. But the prized find is

intermittent crash on undo of insert slide

because I've seen that happen plenty in the real world, and is the problem I was hoping to find.

Turns out its been so difficult to track down because there's a timer involved which is triggered by earlier modifications to the document. To get it to crash by undoing insert slide you have to modify an object in the document, which triggers an object-modified timer, and then very quickly, before the modified-timer fires, undo insert slide. Which has the effect of impress not registering that the slide has been deleted. Some time later, in far away code, impress will crash on use of the deleted slide.

afl-eventtesting was able to find a sequence of keystrokes (which isn't a huge surprise seeing as I primed it with some insert and undo slide sequences so it didn't have to mutate things too far before it modified a document object after an insert and before the undo) to trigger the crash and the eventtesting + headless modes of LibreOffice gave a reproducible platform where the same events happen in the same sequence without any intermediate system-ui events to throw off the delicate timing. Once the thing is reliably reproducible then its just a matter of grinding through the debugging.

Jakub SteinerWallpapers

Part of GNOME’s visual identity are the default wallpapers. Ever since GNOME3 was released, regardless of the release version, you can tell a stock GNOME desktop from afar. Unlike what most Linux distributions do, we don’t change the wallpaper thematically from release to release and there is a strong focus on continuity.

Adwaita 3.18 Day

While both Android and Windows are going analog, we’re not that hipster. If you follow my journal, you probably wouldn’t be shocked to hear I mainly use Blender to create the wallpapers. In the past Inkscape took a major part in the execution, but its lacking implementation of gradients leads to dramatic color banding in the subtle gradients we need for the wallpapers. I used to tediously compensate for this in GIMP, using noisify filters while working in high bit depth and then reducing color using GEGL’s magical color reduction operation that Hans Peter Jensen wrote a while a back. It allows to chose various dithering algorithms when lowering the bit depth.

However thanks to Cycles, we get the noise for free :) Actually it’s one of the things I spend hours and hours waiting for getting cleaned up with iterations. But it does help with color banding.

Blender rendering the night variant of the 3.20 Adwaita wallpaper (work in progress).

In my work I have always focused on execution. Many artists spend a great deal of time constructing a solid concept and have everything thought out. But unless the result is well executed, the whole thing falls apart. GNOME Wallpapers are really just stripes and triangles. But it’s the detail, the light play, the sharpness, not too much high density information that make it all work.

First iterations of the GNOME 3.20 variants are beginning to land in the gnome-backgrounds module. Check it out.




Lock Screen

OSP (Open Source Publishing)Workshop Up Pen Down

Up Pen Down – Huppe Plume Tonne is a workshop linking typography and performance. It is a collaboration between OSP and choreographer Adva Zakai, and you are invited to participate! The workshop will take place Saturday 24th and Sunday 25th of October in the Balsamine theatre, Brussels. On the 25th the doors will be open […]

Ben MartinTerry & the start of a video project.

I did a test video showing various parts of Terry the Robot while it was all switched off and talking about each bit as I moved around. Below are some videos of the robot with batteries a humming and a little movement. First up is a fairly dark room and a display of what things look like just using the lighting from the robot itself. All the blinking arduino LEDs, the panel, and the various EL and other lights.

The next video has a room light on and demonstrates some of the control of the robot and screen feedback.

I got some USB speakers too, but they turned out to be a tad too large to mount onto Terry. So I'll get some smaller ones and then Terry can talk to me letting me know what is on its, err, "mind". I guess as autonomy is ramped up it will be useful to know if Terry is planning to navigate around or has noticed that it has been marooned by a chair that a pesky human has moved.

The talk over video is below. I missed talking about the TPLink wifi APs and why there are two, and might be only one in the future. The short answer is that Terry might become a two part robot, with a base station only one wifi AP is needed on the robot itself.

Caolán McNamarafuzzing LibreOffice input events with american fuzzy lop

This is a demo of using the american fuzzy lop fuzzer as an engine to drive LibreOffice UI testing by fuzzing serialized keyboard input events.

For demo purposes the UI is visible here, but it can be run headlessly too. Given enough time afl can fuzz the initial input text of hello into keyboard shortcuts to enter menus and launch dialogs.

I think the concept is pretty neat and fun, but this is still experimental stage stuff that I'm playing with and trying to up the performance.

Jakub SteinerSVG animation

I haven’t written a post in quite a while, so I decided to document my failure to come up with a viable alternative to the translatable animations we use in Getting Started documentation. So let’s start with what’s wrong with it. Despite being far more maintainable than a screencast, it’s still a major hassle to keep the videos in sync with the developing designs. Every translation requires a re-render of all the frames and it quickly grows into gigabytes per language.

Czech version of one of the Getting Started videos

If you’re interested in seeing how these were produced, see the Behind the Scenes of getting Started video.

The animations themselves aren’t super complex. Basic transforms (translation, scale and rotation) and opacity is all that’s needed. And because we are using translatable SVGs in Mallard, it was time to look into SVG animation. There are numerous options available to animate in SVG, which already gave me a hint that none of them will work properly for my use case. I hate being right.


I’ll starts with the one I like least. The inline garbage approach. SMIL. Each attribute of an SVG element is animateable. Creating a global sequence using this by hand is close to impossible. Its capabilities do include a few extras like animating an object along a path, but in general I cannot imagine editing this by hand. Incorporating Inkscape into the workflow seemed feasible first. Inkscape will not touch the XML it doesn’t know about. It will not clean out any of the animation stuff when you save. The xlink namespace definition to animate along path seems to have worked, but I can’t figure out some weird offsets. Groups usually get some matrix transforms as soon as you reposition them. It all may boil down to Inkscape using its own coordinate system, I don’t know. I haven’t succeeded to bolt some animation on the Inkscape generated SVG.

About as complex of a SMIL animation as I can produce :)


A much more appealing was the concept of using CSS animation. We do a lot of transitions and some animation in gtk+, so it would have been great to reuse the same technology here. While CSS transitions are spot on, animation with a sense of a global timeline is not really the use case for the web. Usually animation in the intended context is an individual transform happening after an event triggered. Creating a sequence of various objects animating in a global timeline is pretty awkward. Especially if you want to loop the whole animation infinitely. The only tools for your disposal is either a time offset or relative time keyframes, keeping all objects’ animation the same length.

CSS Based animation of a #cursor1 with a JS playback reset button that doesn’t work. ;)

I also ran into Firefox and Webkit interpreting transform-origin differently.

.run-animation {
  transform-origin: top left;
  animation: cursor-move 2s ease 1s forwards, 
                    fade-in 1s linear 0s, 
                    cursor-click .25s ease 3s alternate 2;
@keyframes fade-in {
  from { opacity: 0;  }
  to {  opacity: 1; }
@keyframes cursor-move {
  from { opacity: 1;  }
  to {  opacity: 1; transform: translate(100px,-100px);}
@keyframes cursor-click {
  from { transform: translate(100px,-100px) scale(1); }
  to { transform: translate(100px,-100px) scale(.5); }

The above CSS uses animation-delay. It might be possible to have all keyframes last the same time and use the keyframes relative keyframing for timing (duplicate same keyframe to “hold”). I can’t imagine retiming or generally modify an existing animation hand constructed using CSS’ keyframes though. A visual tool with a timeline would be necessary.


There are many js based frameworks to aid creating and animating SVG documents in realtime, but none of them seem to aid me in creating a global complex animation using assets created in Inkscape. I looked at Google Webdesigner next.

Google Webdesigner

Google Webdesigner has all the necessary visual tools like property keyframing and a global timeline. Sadly it produces a rather less self contained set of html, js and css files. I didn’t figure out a way how that could be brought into Mallard.

In the end, even though the animations don’t seem to be that complex, maintaining them by hand doesn’t seem very doable. A visual editor is required. If Google Webdesigner can be taught to produce a standalone SVG or Mallard taught to use iframes, I’m all ear. Any pointers to a similar tool is also welcome.

Caolán McNamaraview/edit shape control points

In LibreOffice 5.1 the shape properties dialog for enhanced shapes now lists and enables editing the control points. This is in addition to the preexisting mechanism of selecting with the mouse the yellow control handle of the shape, but enables viewing and fine control over the control values

Jakub Steiner


OSP (Open Source Publishing)A new home for OSP

In what might be a some-what surprising move (even to ourselves) OSP has taken up offices in the World Trade Center. Do not hesitate to pass by! Send us a mail, and we will meet you in the lobby! Or write us a letter at: Avenue Roi Albert II / Koning Albert II laan 30, […]

OSP (Open Source Publishing)Up Pen Down — Huppe plume tonne

Announcing Up Pen Down — Huppe plume tonne a workshop and preformance during the Quinzaine Numérique 2015: specifics of the workshop are on their way, but for now, here is the introduction text: En 2012, OSP (Open Source Publishing) construit un workshop de plusieurs mois avec des étudiants de l’École Supérieure d’Art et Design de […]

Caolán McNamaraimpress save background image

Impress has a "Set Background Image" option in its slide context menu for a while. For 5.1 I've added a matching "Save Background Image" to save the current background image to file.

Caolán McNamaracrash testing and coverity, conference report

Slides for this morning's Crash Testing and Coverity numbers presentation. Summary, all ok, numbers ~0. If I'm analysing this right, then the highest quality is achieved at the height of the holiday season.

Caolán McNamaravertical text columns preview

My small contribution to last night's LibreOffice conference hack-fest. In vertical text mode, the column view for pages now previews in the correct direction.

Ben MartinTerry Motor Upgrade -- no stopping it!

I have now updated the code and PID control for the new RoboClaw and HD Planetary motor configuration. As part of the upgrade I had to move to using a lipo battery because these motors stall at 20 amps. While it is a bad idea to leave it stalled, it's a worse idea to have the battery have issues due to drawing too much current. It's always best to choose where the system will fail rather than letting the cards fall where the may. In this case, leaving it stalled will result in drive train damage in the motors, not a controller board failure, or a lipo issue.

One of the more telling images is below which compares not only the size of the motors but also the size of the wires servicing the power to the motors. I used 14AWG wire with silicon coating for the new motors so that a 20A draw will not cause any issues in the wiring. Printing out new holders for the high precision quadrature encoders took a while. Each print was about 1 hour long and there was always a millimetre or two that could be changed in the design which then spurred another print job.

Below is the old controller board (the 5A roboclaw) with the new controller sitting on the bench in front of Terry (45A controller). I know I only really needed the 30A controller for this job, but when I decided to grab the items the 30A was sold out so I bumped up to the next model.

The RoboClaw is isolated from the channel by being attached via nylon bolts to a 3d printed cross over panel.

One of the downsides to the 45A model, which I imagine will fix itself in time, was that the manual didn't seem to be available. The commands are largely the same as for the other models in the series, but I had to work out the connections for the quad encoders and have currently powered them of the BEC because the screw terminal version of the RoboClaw doesn't have +/- terminals for the quads.

One little surprise was that these motors are quite magnetic without power. Nuts and the like want to move in and the motors will attract each other too. Granted it's not like they will attract themselves from any great distance, but it's interesting compared to the lower torque motors I've been using in the past.

I also had a go at wiring 4mm connectors to 10AWG cable. Almost got it right after a few attempts but the lugs are not 100% fixed into their HXT plastic chassis because of some solder or flux debris I accidentally left on the job. I guess some time soon I'll be wiring my 100A monster automotive switch inline in the 10AWG cable for solid battery isolation when Terry is idle. ServoCity has some nice bundles of 14AWG wire (which are the yellow and blue ones I used to the motors) and I got a bunch of other wire from HobbyKing.

Ben Martin10 Foot Pound Boots for Terry

A sad day when your robot outgrows it's baby motors. On carpet this happened when the robot started to tip the scales at over 10kg. So now I have some lovely new motors that can generate almost 10 foot pounds of torque.

This has caused me to move to a more rigid motor attachment and a subsequent modofication and reprint of the rotary encoder holders (not shown above). The previous motors were spur motors, so I could rotate the motor itself within its mounting bracket to mate the large gear to the encoders. Not so anymore. Apart from looking super cool the larger alloy gear gives me an 8 to 1 reduction to the encoders, nothing like the feeling of picking up 3 bits of extra precision.

This has also meant using some most sizable cables. The yellow and purple cables are 14 AWG silicon wires. For the uplink I have an almost store bought 12AWG and some hand made 10 AWG monsters. Each motor stalls at 20A so there is the potential of a noticable amount of current to flow around the base of Terry now.

CraftingType workshopsCrafting Type Toronto: 5 Seats Left

Just 5 seats left for the upcoming Crafting Type Toronto!

Aoife Mooney returns to Toronto to offer a 2.5 day beginner’s font design workshop!

Where: Centennial College, Toronto, Canada (951 Carlaw Ave)

When: September 25th—27th, 2015

Friday: 3:30 pm — 7:00 pm Saturday + Sunday: 9:00 am — 7:00 pm

We offer discounts for design association members, students, and further discounts for early bird registrations, so prices range from CAD$225 (student’s early bird) to CAD$550 (last minute professional’s price)

With just 1 instructor and our unbeatable 10:1 student:instructor ratio, places are limited and selling fast….

Sign up Today!

Also for all font fanatics, there’s an excellent evening event the Monday before the workshop (September 21) at Sheridan College: “An international panel of type and design experts will gather at Sheridan College on September 21 to talk about the form of typography and how its history contributes to its future. The discussion will follow an exhibition and world premiere screening of a digitized and expanded film by Carl Dair, who designed Cartier – Canada’s first Latin typeface.”

CraftingType workshopsCrafting Type Toronto Canada

Aoife Mooney and Octavio Pardo return to Toronto to offer a 2.5 day beginner’s font design workshop!

Where: Centennial College, Toronto, Canada (951 Carlaw Ave)

When: September 25th—27th, 2015

Friday: 3:30 pm — 7:00 pm Saturday + Sunday: 9:00 am — 7:00 pm

We offer discounts for design association members, students, and further discounts for early bird registrations, so prices range from CAD$225 (student’s early bird) to CAD$550 (last minute professional’s price)

With just 2 instructors and our unbeatable 10:1 student:instructor ratio, places are limited and selling fast….

Sign up Today!

Also for all font fanatics, there’s an excellent evening event the Monday before the workshop (September 21) at Sheridan College: “An international panel of type and design experts will gather at Sheridan College on September 21 to talk about the form of typography and how its history contributes to its future. The discussion will follow an exhibition and world premiere screening of a digitized and expanded film by Carl Dair, who designed Cartier – Canada’s first Latin typeface.”

Jakub SteinerGUADEC Gothenburg

The GUADEC posts have settled by now, which is why it’s time for me to post another one. I hope those of you lucky enough to be abel to visit the beautiful, but expensive, city of Gothenburg will enjoy this little 4K edit of the moment I’ve captured on my pocket camera.

GUADEC Gothenburg at 4K

And if you did, check out some of the photos too. I’ve stoppped counting how many I’ve attended, but it’s always great to meet up with all the creative minds and the new student blood that makes GNOME happen. Thanks to all of you, and especially to this year’s organizers! They made a stellar job.

DSC01363 DSC01140 DSC01233

Pravin SatputeFedora 23 Internationalization test day today !!

We have planned Fedora 23 i18n test day today. Most of the details are available on test day page regarding how to execute test day.

From the changes side we have 3 changes this time
Basic motivation behind this test day is to make sure all essentials components for languages working fine.
  • Enconding's 
  • Fonts
    • Default selected fonts are appropriate for languages.
  • IME's
    • IBus
    • Default input methods
  • Rendering & Printing
    • For complex scripts Left-to-Right etc.
  • Locales
    • Locale available with default installation
    • Its processing
  • I18n Tools
    • fonts tweak tools
    • dnf langpacks
    • IM settings
    • spell checkers 
 Above are just few top of the mind things for languages. Requesting all Fedora users and developers participate in test day and make sure your language components work fine in Fedora 23.

Ben MartinInspecting ODF round trips for attribute retention

Given an office application one might like to know which attributes are preserved properly across a load and save cycle. For example, is the background color or margin size mutated just by loading and saving an ODF file with OfficeAppFoo version 0.1.

The odfautotests project includes many tests on simple ODF documents to see how well each office application preserves the information in the document. Though testing ODF attribute preservation might not be as simple as one might first imagine. Consider the below document with a single paragraph using a custom style:

  <text:p text:style-name="style">hello world</text:p>

In the styles.xml file one might see something like the following:

     <style:text-properties fo:background-color="transparent" />


This input is obviously designed to see how well the fo:background-color style information is preserved by office applications. One thing to notice is that the style:family attribute in the above is paragraph.

If one loads and saves a document with the above fragments in it using LibreOffice 4.3.x then they might see something like the following in the output ODF file. In content.xml:

<text:p text:style-name="TestStyle">hello world</text:p>

And in the styles.xml file the background-color attribute is preserved:

<style:style style:name="TestStyle"
      <style:text-properties fo:background-color="transparent"/>

One can test if the attribute has been preserved using XPath selecting on the @style-name of the text:p and then making sure that the matching style:style has the desired fo:background-color sub attribute.

The XPath might look something like the below, which has been formatted for display:

  or (not(@s:display-name) and @s:name='TestStyle')]

Performing the load and save using Word 2016 is quite interesting. The resulting content.xml file might have:

<style:style style:name="P1"
     <style:paragraph-properties fo:break-before="page"/>
<office:text text:use-soft-page-breaks="true">
  <text:p text:style-name="P1">hello world</text:p>

and in styles.xml the background-color setting is pushed up to the paragraph style level.

<style:style style:name="TestStyle"
      <style:text-properties fo:hyphenate="false"/>

<style:default-style style:family="paragraph">
<style:text-properties ... fo:background-color="transparent"

So to see if the output ODF has the fo:background-color setting one has to consider not just the directly used style "P1" but also parent style elements which might contain the attribute instead. In this case it was pushed right up to the paragraph style.

For the Word output the above XPath doesn't necessarily work. If the attribute we are looking for has been pushed up to paragraph then we should look for it there instead. Also, if we are looking at the paragraph level then we need to be sure that there is no attribute directly at the lower, TestStyle, level. Also it helps to ensure in the selection that the paragraph is really a parent of the TestStyle, or P1 in the above.

After a bit of pondering I found an interesting solution that can evaluate using plain XPath1.0. To test the value I pick off the fo:background-color from both the TestStyle and also the paragraph level. If those values are passed to concat() then, if the attribute is only at the TestStyle or paragraph level we get something that can be used to test the value. If the attribute appears at both levels are are in trouble.

For example:

<style:style style:name="TestStyle"
<style:text-properties ... fo:background-color="transparent"  />
<style:default-style style:family="paragraph">
<style:text-properties ... fo:background-color="#FF0000"/>

Considering the semantic XPath query of concat( TestStyle/@fo:background-color, paragraph/@fo:background-color ) the result would be  transparent#FF0000 which would not match a string comparison with 'transparent'.

The trick is to use an array selector on the second item in the concat() call. If we only return the paragraph/@fo:background-color value if there is no value associated with the TestStyle then the concat will effectively only return one or the other (directly on TestStyle or nothing on TestStyle and the attribute from paragraph).

With this the query can allow the office application to move the information to a parent of the style and still match for a test.

Pravin SatputeFedora 22 release event at Aurangabad, India

    This is my 7th event specific on Fedora after becoming an Ambassador. Ashutosh is already doing good for promoting Fedora in Aurangabad. He earlier did Fedora 21 release party at his institute and took number of topics around Fedora.

    During FUDCon APAC we were talking about doing Fedora 22 release event at Aurangabad. Plan was to do it bit bigger with one of the major institute in Aurangabad. Thought will take some break after FUDCon and decided to do it in August. Ashutosh had initial discussions with "CHH. SHAHU COLLEGE OF ENGINEERING".  Most of the details regarding Release events are available at Wiki page.

    I have been never to Aurangabad and wanted to be there but was not sure whther i can actually make it. Most of the time during discussions with Ashutosh i was like plan as per your convenience and if possible i will jump in the last moment. Decided date as a 21st August and luckily me too able to make it :)

    I think event we did happened in good time. Red Hat GLS team recently signed MOU with CSMSS for "Red Hat ACADEMY - Hands-on curriculum for academic programs". There is already excitement on Free of open source software's. We were even more lucky that Business Development Manager - Ipsita Chatterjee was there. She shown interest for supporting Fedora activities and ask to inform her whenever any support required.

Yummy Cake of Fedora 22 release

    Coming back to event, Fedora release event i have attended till date used to be small scale i.e. around 20-50. This was an exception and bit bigger in scale. Around 250+ students were there. All the things happened very formally. Introductory talks from Principle and HOD of CSMSS. Then felicitation of guests.  Before starting actual program we did release of DVD's and cut the cake.

From left: Ms. Ipsita C, Principle Dr. U. B. Shinde, Me, Mr. Ashutosh B, Pushpendra C. Hod. Dr. S. P. Abhang

    Normally i like to talk on Fedora + Globalization. But since this was first event at this college. Talking on Basics of FOSS and Fedora was important. Started with basics of foss and introduction to Fedora.

Few nice moments

    Then Ashutosh started with demonstrating installation of Fedora 22. Initially we started with netinstall iso but somehow it was not working well. Then we changed iso. in meanwhile we started asking questions to students and Red Hat GLS gave few goodies to students who gave correct answers.

    I think demonstrating installation of Fedora is very important, specifically at places new to Fedora. It gives bit more confidence and also motivate person to try Fedora. After major steps of installation, while packages were getting installed Pushpendra started his talk.

    Pushpendra Chavan travelled from Pune to Aurangabad specially for release event. He delivered talk on "Features of Fedora Workstation". During his talk he also motivated students by telling his own story about how he came to field of FOSS.

    Lastly i did closing of release event by talking on How to contribute to Fedora and how it can help to students. This talk was well taken by students. It provided ideas to students regarding what they can do in Fedora. I also mentioned about recent proposal to council regarding providing certificate to students doing contribution to Fedora.

    Unfortunately by this time it was already 1:45pm and everyone was hungry. We missed Q&A session. But still we were there for some time and answering to queries of students.

    In the morning we mate with HOD Dr. Abhang and really impressed with his interest in moving Fedora ahead. We had quick meeting with principle where we had nice discussions on Fedora and open standards. CSMSS college is just in there third year but if one see progress its excellent. Management is very supportive and very much interested in Linux. They believe in Free and open source. Libreoffice is already is use by all CSMSS staff and they have already moved couple of LABS into Fedora. Infrastructure is awesome. Most of the latest technologies already in CSMSS including digital board. (At least i saw it first time). I mentioned to management about Fedora certificate to students for completing activities.

    Special thanks to Ashutosh for taking initiative for this event, CSMSS Principle Dr. Shinde and HOD Dr. Abhang for hospitality and arrangement and Pushpendra for travelling Aurangabad for this event.

   Going forward we need to conduct couple of session to educate CSMSS students further on Fedora. Soon i will discuss with other Ambassadors, Developers and plan one.

Group photo with Fedora 22 DVD's

Pravin SatputeFedora Localization test tomorrow (18th Aug 2015)

I always wonder how fast Fedora keeps on moving. I am going to Aurangabad, India for Fedora 22 release event coming Friday and at other end Fedora Alpha 23 released last week and we are going to execute Fedora 23 L10n test day tomorrow.

Coming back to topic on Fedora Localization test day. In last couple of months we formed Fedora G11N group and started to work in improving things.

Number of improvements has been happened for F23 L10n test day. Those are as follows.
  1. Re-evaluated application list for testing. (Still i feel we can improve it further by discussing on devel list)
  2. Test cases has been cleaned and improved for F23 releases. 
  3. Test day app is finally in use :)
Saying that now its time to test Fedora 23 readiness for your language.

As usual start testing process with L10n test day page This page has all the details you will be required. If any problem feel free to ping peoples on #fedora-test-day.

I know people are still returning from flock-2015, so might not get time to execute L10N test day. Though we mark particular day for testing, you can still execute test steps in your free time. For L10n test day we might wait for single or couple of weeks for evaluating testing results. Good if you can complete before it :)

Caolán McNamaracrash testing, 80000 documents, 0 export failures, 0 import failures

The last LibreOffice crashtesting run reports our goal of 0 import/export crash/asserts. This is on a refreshed up to date 80000 docuent corpus from various bugzillas and other sources.

Earlier runs had been over a static collection of 76000 documents, hopefully now we have zeroed the dials we can refresh the corpus far more frequently, perhaps on every run, and actively trawl for crasher documents.

Caolán McNamaraguadec 2015 porting LibreOffice to gtk3 slides

Presented our porting LibreOffice to GTK3 presentation at GUADEC yesterday. Here, as hybrid pdf, are those slides with a rough guide to our architecture there and current wayland progress.

It was pointed out after the presentation (by jrb), that our gtk3-themed spinbuttons had the up and down buttons in +,- order instead of the correct -,+ order. So that's fixed now.

Jakub SteinerFPV Addicts

I’ve started doing longer edits of the 15 second clips I usually put on Instagram. I’ve been really creative with the naming so far.

FPV Addicts

FPV Addict

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


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.)


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.


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 to

The freshly announced RHEL 6.7 upgrades LibreOffice from to RHEL 7.2 will upgrade from to 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 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/
export LD_LIBRARY_PATH=/Applications/

You have to jump through a few more hoops. You'll find that the plugin ./lib/soprano/ 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 →

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.


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 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
  • Video recording of talks. Trying for self recording with
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:

    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.

    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.

     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.

    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.

    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 … 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.