Inkscape’s capacity as a SVG Font Editor - and moreover, a typeface design tool - is gathering steam :-)
I didn’t propose adding any special font support to Inkscape, just adding a few things to the UI to enable people to draw typefaces, which is a different task to developing production font software - and for that, fontforge is great, and its spartan UI doesn’t matter so much for that work.
But the Inkscape developers are talking about much more sophisticated stuff, which is exciting:
Currently SVGFonts rendering in a helper GtkWindow is working ok for glyphs described using the path descrition (“path:d”) attribute. Once we move the rendering to the canvas, arbitrary chunks of SVG will be added to the glyphs. Currently glyph kerning and missing-glyph nodes are also properly handled and rendered.
I am using the helper GtkWindow because we still don’t have pango+userfonts integration. So I am using cairo+userfonts directly on the GtkWindow. Once pango supports userfonts, I will remove the GtkWindows and render SVGFonts on the correct place (directly in the canvas). Since my work now depends a lot on this pango support, it has been evolving very slowly. I am thinking of doing some user interface work while we are stuck with pango.
So, this thread is intended to discuss ideas and mockups on what people want to see for the SVGFonts user interface.
Mental told me yesterday that it should be possible to edit glyphs on canvas directly on the rendered text in an “edit fonts” mode. I agree that this is the ideal thing to do, i.e. have things rendered in real time as much as possible. For example, when the text “Felipe” is rendered using an SVGFont and the user goes to “font edit mode”, then editing the content of one of the “e” glyphs would make both “e” glyphs to be visually modified as if they were clones. That is the desired “real time” on-canvas bahaviour.
But I also think that there should be an off-canvas glyph-editing user interface. There must be a dialog where the user can define the glyph-names, metadata such as font-family name and all the other font descriptors, the missing-glyph curves, and all of the glyph-kerning rules. Also, in this off-canvas UI, we could/should have helper lines indicating font metrics information such as base-line, top-line, etc. just like a font-editor would be.
I also have in mind a unicode codepoint selector widget to be used for the u1 and u2 attributes in the kerning rules dialog.
Please, feel free to offer new ideas or to say my ideas are crap or whatever. I am open to discussion. JucaBlues
George Williams posted on the FontForge mailing list today:
the cvs tree contains little icons in the menus. I’m not the greatest icon designer. If anyone would like to redo them so they are nicer that would be great. There is one unexpected caveat: FontForge doesn’t handle alpha channels, so all icons should be indexed images with a transparent color. (This corresponds to an alpha channel which is either all on or all off inside gimp).
I hope the toolkit FontForge uses will be improved further one day - anti aliased fonts would be my Number One feature :-) - but this feature has been dormant for a while, apparently.
George, diplomatic as always, already coded up a solution for this too:
There is a preference item Generic->PixmapDir which allows you to select a directory in which to find icon files, so ff could come with several different styles of icons and users could pick the one they liked. Personally I think that’s a better approach than fixing on just one style (though I agree, the default style should be consistent, and isn’t currently).
I’m annoyed to see Gatto’s new book fall victim to “open source” propaganda, but look forward to its release :-)
Kucinich is trying again to impeach Bush, and his “Articles of Impeachment” is heavy reading: Fraud -
A Halliburton manager was indicted for ‘major fraud against the United States’ for allegedly billing more than $5.5 billion for work that should have cost only $685,000 in exchange for a $1 million kickback from a Kuwaiti subcontractor.
- bullying whistleblowers -
In a statement on Feb. 7, 2002, President Bush declared that in the US fight against Al Qaeda, “none of the provisions of Geneva apply” … On August 27, 2005, the Army demoted Ms. Greenhouse, removing her from the elite Senior Executive Service and transferring her to a lesser job in the corps’ civil works division . As Frank Rich of The New York Times described the situation, ‘[H]er crime was not obstructing justice but pursuing it by vehemently questioning irregularities in the awarding of some $7 billion worth of no-bid contracts in Iraq to the Halliburton subsidiary Kellogg Brown Root.’ The demotion was in apparent retaliation for her speaking out against the abuses, even though she previously had stellar reviews and over 20 years of experience in military procurement.”
- and imprisoning children:
In May 2008, the US government reported to the United Nations that it has been holding upwards of 2,500 children under the age of 18 as “enemy combatants” at detention centers in Iraq, Afghanistan and at Guantanamo Bay (where there was a special center, Camp Iguana, established just for holding children). The length of these detentions has frequently exceeded a year, and in some cases has stretched to five years. Some of these detainees have reached adulthood in detention and are now not being reported as child detainees because they are no longer children.
Doesn’t get much more “evil empire” than that.
More Spiro love from Andy:
Just the node alignment stuff in Inkscape is awesome - already advanced past AI and FontLab’s node alignment tools - which Andy says is thanks to Mike Wybrow’s adaptagram code.
It seems the point of inflection for Inkscape’s feature set is becoming very soon now, but I hope the documentation for all the new features will be better. Symfony http://www.symfony-project.org/doc/1_0/ is a really nice model of how to documentation from a technical writing perspective; the “Askeet” 24x1hour tutorials, the screencast lessons, are great. Ubuntu’s screencasts http://screencasts.ubuntu.com/ shows what can be done today on the freedesktop with screencasting.
And I remembered Bulia (I think) talking about “inkcore” at LGM2007:
Dario Taraborelli has an excellent LaTeX page that showcases the advanced typography that TeX is capable of (although he is very Mac OS X-centric and promotes proprietary fonts, sadly) and even has a page about typesetting a CV which I used to make my latest CV.
I hope I can inspire people to patch Inkscape to make it suitable for drawing type :-)
SVG Fonts isn’t supported much anywhere, but Chris Lilley’s talk at LGM2008 has got me thinking :-)
Could Inkscape become an SVG Font Editor?
Designing type involves working at four scales:
- designing individual letters (“drawing letters”)
- designing letters that look like they belong together (“drawing type”)
- designing letters that fit together to form words (“designing metrics”)
- designing letters that fit together to form paragraphs (“looking at typeset text”)
I think Inkscape could be good at all four of these.
Inkscape already has a template “fontforge_glyph” that sets up a canvas suitable for drawing a single letter - (A)
One way of making (B) possible could be through layers. SVG has “svg fonts” already, and this could work by having each glyph appear to be a layer. It would be possible to write a simple program to output an XML tree with the glyphs you want to design, and have a bunch of SVG Font templates for various common scripts. For this to really be useful though, Inkscape needs to have a new kind of layer-specific guideline. Inkscape doesn’t appear to have this right now, but since it has global ones, this ought to be simple to add. (If it isn’t again the SVG spec, it can be in the Inkscape-specific namespace.) Then, if the layers palette and “duplicate window” features could be extended to make it easy to compare layers (and thus glyphs) - stacking them, seeing them side by side, and so on.
The FontForge tutorial explains a little about designing metrics - (C). Having the left and right bearings appear as the page size (width) would be simple - and then Inkscape would be extended to allow changing the page size’s width directly on the canvas, instead of via the document properties dialog, so just like moving a guideline. But perhaps having layers with different page sizes is against the SVG spec… Although that would be the most straightforward way of setting the sidebearings from a UI perspective, if that isn’t possible, having the metrics appear as layer-specific guides with “left bearing” and “right bearing” IDs or Class could do the same job easily enough.
But what is really needed is to create a special “metrics” dialog. This could re-use the “duplicate window” feature to grab the glyph’s outline and render it on another canvas, a special one where the left and right bearings can be adjusted in the context of several letters next to each other in a word. (Again, see the FontForge tutorial if you’re not familiar with font editor programs.)
For typesetting text with the font, it would be straightforward to write some (python) glue scripts that open the SVG Font within FontForge, compile it into a system font format (Type 1, OpenType CFF) and then generate a PDF ‘specimen’ sheet to be printed. But eventually Inkscape will have to be able to render SVG Fonts directly on the canvas, and then it will be simple to have a “paragraph view” layer with some text that uses the glyphs from the self SVG.
Spiro has now been directly integrated into Inkscape!
By “direct integration” I mean that using the normal drawing tools, both freehand and bez-pen, there is a “spiro” mode that converts the points to spiro points.
My friend Andy has posted some drawings he’s made that show off the smooth curves Spiro creates:
Since most graphic designers use Crap OS X, they’ll have to wait until the next official release of Inkscape, later in the summer :-)
I added a section about compiling Inkscape on Fedora 9 to the Inkscape wiki.
The TUG2008 Programme is now online and I appear to be at the top. Here’s my abstract PDF and of particular note are Jonathan Fine’s LaTeX3 talk, Dan Rhatigan’s talk about mathematical fonts, and Jonathan Kew’s TeXWorks talk - UKTUG funded Jonathan to develop this program :-) - and also a talk about Cuneform type design with FontForge :-)
Here’s the text of my abtract:
“There are three kinds of people: Those that can count, and those that can’t.”
Metafont is an algebraic programming language for describing the shapes of letters, designed and implemented by Knuth as part of the original TeX typesetting system. It was one of the earliest digital type design systems, and is completely capable of dealing with the letters of any writing system, has always been freely available, and is remarkably powerful. Yet it never caught on with type designers.
The idea of software freedom has not caught on with many type designers either. Although the free software movement has produced a massive amount of high quality programs, there are few fonts and fewer original type designs - although there are some, with many of those available on CTAN.
Psychologists since Jung have suggested that human personality can be classified into ‘types.’ In “Please Understand Me II” David Keirsey relates 20th century theories of personality to the four humours proposed by Hippocrates and personified by the Greek gods Dionysus, Apollo, Prometheus, and Epimethius.
Do type designers tend to be of a certain humour? Is the inherently abstract Metafont approach of describing shapes with algebra, or the rational appeal of software freedom, unintuitive for that temperament? Are people who do find free software and algebra intuitive involved in type design?
This presentation introduces the discipline of type design, reviews some of the fonts currently distributed in CTAN and explains their various origins. It draws attention to how they have been developed: The stroke - based Metafont approach, involving writing source code, is starkly different to the typical outline - based ‘Fontographer’ approach, where letter shapes are visually and interactively designed. It suggests the technical benefits and drawbacks of each approach, and why some people prefer one approach over another.
Finally, it covers some tips and tricks for those contributing more free software fonts to the TeX world, including some of the legal issues, where and how to source revivals, how to create new designs, and finally, how Metafont might be modernised in a hybrid stroke/outline system to suit every personality.
Dave Crossland is an international public speaker on software freedom and fonts, runs a small business doing type design, information design and free software consultancy projects, and is a member of the UKTUG Committee. He is currently undertaking the MA Typeface Design programme at the University of Reading’s Department of Typography.
A British guy got turfed off a plane for wearing… a Transformers T Shirt?
Go through security, get pulled to the side. I’m wearing a French Connection Transformers t-shirt. Bloke starts joking with me is that Megatron. Then he explains that since Megatron is holding a gun, I’m not allowed to fly. WTF? It’s a 40 foot tall cartoon robot with a gun as an arm. There is no way this shirt is offensive in any way, and what I’m going to use the shirt to pretend I have a gun?
An American woman got turfed off a plane for wearing… a necklace?
“How do you know it wasn’t a real gun?” asked Guy, a security agent with the Canadian Air Transport Security Authority, who also declined to provide his last name. “Who knows if there is a gun that small that can shoot bullets? You don’t know that. They followed the rules.”
The arguments offered to defend them show the insane frame of mind of the security state: grasp at straws to justify whatever they do, rather than admit being mistaken. That insanity is much more dangerous than any non-state-sponsored terrorists.
I’ll have to hit up eBay for gun memorabilia :-)
Ben Griffiths posted on the Open Rights Group list this little story about why DRM is evil:
“I want to share a DRM story.
I was in Curry’s in Plymouth a couple of weeks ago. A man was arguing loudly with one of the staff, his ten-year old daughter in tears at his side. From what I could gather, she had saved up her pocket money to buy an iTunes gift card - the songs she’d spent her money on, of course, didn’t work on her mp3 player. The man wanted a refund for what seemed to him a defective product; the staff member said that if the card had been used they couldn’t give a refund. The young girl cried and cried and cried.
The altercation went on for at least 15 minutes - the store manager eventually having to call some security chaps to remove him, but not before phoning the police.
So, whose fault was this? Currys for selling a card without making it clear that some songs downloaded from iTunes wouldn’t work on some (!) mp3 players? The girl for not understanding the complicated world of DRM? iTunes for selling DRM music? The record company for not selling DRM-free music? The government for not requiring labelling of DRM-crippled products?
Who knows - I’m pretty sure the only person clearly free of blame was the little girl.
But, perhaps that’s the wrong question - the end result was a stand-up shouting match, someone manhandled out of a store, a staff-member threatened and frightened, and a little girl in tears having spent her pocket money on something that didn’t work.
I thought it was worth sharing this since sometimes we can get bound up thinking about piracy and digital distribution and so on, but these small stories are often missed.”
The “functional works” issue has come up on the BLAG list regarding “soundfonts.” Here’s a fuller version of my post there:
Its important to start this discussion by framing it properly: this is about social policy, not technical detail. Most people are not used to thinking about issues of social policy, since we are trained for “problem solving” instead - myself included, for sure.
An example of this “problem solving” mentality often surfaces in this discussion, where things focus on formats or if things are digitised. But considering just text, be it printed on paper or digital ‘plain text’ or more in complex digital formats, there are three kinds of texts with regard to their roles in society and appropriate social policies.
First, words of aesthetics: A compilation of stories need not be modifiable.
Second, words of testimony: A compilation of political manifestos need not be modifiable.
Third, words of explanation: A compilation of how-tos needs to be modifiable, because it will have “bugs” - it will have things missing, or incorrect, and need updating. If the users of this “functional information” have to ask permission to make these changes, or are in other ways forbidden from making them, they are facing a tyrant. Guess where that leads :-)
Words of testimony or aesthetics are read, but not used.
Novels are entertaining, and if the audience feels things are missing, or incorrect, or need updating, it is not a problem if they have to wait a while before rewriting parts; we have a richer culture if we allow artists to control their works for a time, and then allow other artists to remix works after that.
Manifestos are persuading, but if the audience feels things are missing, or incorrect, or need updating, it is a problem if they rewrite parts - because that will misrepresent and misattribute the original authors; we have a richer culture if we write our own opinions from scratch.
Explanations are informing, and if the audience feels things are missing, or incorrect, or need updating, it is a problem if they can’t do that because it holds up progress; we have a richer culture if we “stand on the shoulders of giants.”
What are SoundFonts?
SoundFonts are collections of very short recordings of sounds that are arranged into musical compositions; you can play a composition using a well-keyed soundfont and it sounds harmonious, then play it again with a off-keyed soundfont and it sounds cacophonous. People need to change the sounds in a soundfont in order to render compositions correctly; akin to the piano tuner who works on physical pianos.
Fonts are digital versions of type designs; the same type design can be in metal, wood, or bitstreams. They are collections of very small shapes that are recognised as letters and are intended to be arranged into arbitary words; you can display a text using a well-spaced type design and it reads easily, then display it again with a poorly spaced type design and it reads poorly. People need to change the type designs they use because they can improve or inhibit reading in different contexts; font software adds an additional motivation for having free type designs, since fonts can have bugs that need fixing like other kinds of software (separate from the issue of the type’s design.)
The license for a soundfont that is part of BLAG permits converting to other formats, which is also an issue for font software. But this is separate to the issue of changing the sounds themselves, like changing the type design versus converting the format of the curves from cubic Type 1 beziers to quadratic TrueType beziers.
I think the SoundFont ought to be removed from BLAG, just like non-modifiable fonts ought to be removed.
Barry Schwartz suggested on the fontforge-devel list that “it would be useful to me to be able to put a bitmap image in a background layer of the metrics window.” George Williams asked, “Can you explain why this is worth the work? Why do you want an image there, that window isn’t intended for glyph design.”
Here are my thoughts:
The metrics window is used for metrics design; if you are doing a type revival from a scanned page and you want to get as close as possible to the original metrics, this would be useful because you could take small cropped sections of that image and drop it in as a background image in the metrics window and then line up the outline glyph’s metrics appropriately.
I think a more automated approach is certainly possible, where another program would segment the page’s letters into pairs or triplets or quadlets or … and have them classified by Optical Charachter Recognition (and by hand); then a complementary FontForge script to process the images and classification list to instantiate a series of metrics windows with each pair image and the corresponding glyphs.
(Raph wrote a program for segmenting scanned sheets into single glyphs, from which I get this idea)
Barry explains his current method:
Instead of Raph’s approach, I automatically cut the text into lines (rather than glyphs), do some ad hoc GIMPy stuff that gives me some idea of the impression, the spread, etc., and load an entire line into the glyph window. (I don’t do any averaging; I tried it and rejected the approach, at least for what I am currently doing.) I wanted to be able to load the lines into the metrics window as well, but it turns out to be more practical, for me, to work as follows: if I am working on right side bearing of “r”, let’s say, and I already have the left side bearing of “n”, I can put the image of the word “turn” behind the “r”, copy an “n” into the “r” window, put it over the “n” in “turn”, and then measure the distance between the letters. The glyph window is much better than the metrics window for this.
Thinking about things, it seems that reverse-engineering metrics from printed matter is made complex by kerning exceptions.