How hard is it make font editing software?

nycionx's picture

Hey there! I'm thinking about making my own font editing program for the PC. I'd like to know how hard it is? I mean what programming language is required to learn and to what level to design a simple font editor (is it C++?)?
Like if I started learning today, could I have a finished product within 6-12 months? Anyone here have a clue?
Thanks :)

Theunis de Jong's picture

It's like any other programming job. I don't know anything about finances, so I cannot write a book-keeping program. I do know a lot about the internals of font files, so it only took me about 6 months to go from idea to a fully working program, to convert existing curves into one of the common font file formats.

The hard part is not actually your currently (possibly non-)existing programming experience. You are talking about a lot of different things here:
1. "font editing": this requires you to learn how to read a font file format (and there are dozens, and at least two file formats are more or less mandatory for any "editor"). You should not only be be able to read the file format but write it as well, which are two different things. If you read a file and write it back without changing anything, optimally "nothing" should be different -- a tall order in itself.
2. "editor" implies a graphical interface. If you never wrote one before, don't start with a font editor ... Font editing is something special among graphic (vector) image software, it has a couple of demands of its own.
3. "Is it C++?" What "is"? The language you need? The language commonly used for font editors? On what platform? For Mac OSX, it's (probably!) Objective-C. Cross-platform solutions can use Java. Using a scripting language, you can leverage the functionality of existing software to include font editing; I used Javascript to add it to Adobe InDesign.

So, your question only raises more questions, and only you can answer them for yourself.

nycionx's picture

Thanks Jong! Pretty detailed answer there. :)

Just wondering, where do you suggest I start this journey? I think I might actually make it for Mac OS X, so I guess I first need to learn Objective C and then.. what's next? How do I learn to make a GUI and vector editing program?
I think I might stick to one format for now to simplify things. OTF is universal so just that is ok right?
What books are available on learning how to read and write font file formats?

Thanks again!

cuttlefish's picture

While I sympathize with the urge to start from scratch, you should research what existing font editing software is like. FontForge is open source, so you can get right into it at the deep end (arguably a bad example, but it's what I use, and you still might learn a thing or two about what you'd want to do different).

Karl Stange's picture

Why do you want to make your own? Is there something significantly lacking for you in the range of existing tools or do you just want the challenge? If you are interested in doing something very different then platform independence would be a good start.

nycionx's picture

yes it is kind of a challenge. I want more control over my tools too :) so I can change them however way I like
I would also like to bring it to the iOS or Android eventually since mobile app development is at a high now

I just need to know what books and/or tutorials (video) I should start with to understand font app development. if not specific books, specific topics and I'll google for resources myself.

Thanks for your feedback buys!

Karl Stange's picture

As Jason has already pointed out, FontForge is probably a great place to start as you can look at how it has been put together. If you want to develop for the Mac then Apple's resources are probably the best place to begin...

nycionx's picture

books please books. or topics
thank you
ill check out the fontforge too but if i take a look it I'll likely flip out even just skimming through it
i need beginner stuff first then intermediate then advanced
please no vague answers. Jong's post has been so far the most detailed and helpful. thank you Jong

please dont reply if you don't have what Im looking for: books/topics. thats all

Karl Stange's picture

If you want to learn about the most up to date techniques for creating your own software then you will need to look beyond books and may find (as with most technical issues relating to fonts) that forums such as this can be the richest source of useful information, particularly when it comes to fine details.

If you would like more than vague answers then you would do well to post more than vague questions.

cuttlefish's picture

there are a lot of smaller tools for fonts that execute narrow processes, much in the way Photoshop plug-ins do, except for there being no universal plugin API among existing font editors. There is however, the UFO font design interchange format that lets you shuttle your drawing data around without committing to a compiled font. Meh, I've been up way too late, so I'm not 100% sure about what I'm talking.

pvanderlaan's picture

You need Xcode if you want to develop for Mac OS X and iOS. Manuals and tutorials for building apps can be found at https://developer.apple.com/

altsan's picture

First of all, what's your programming experience/knowledge level like?

Second, what kind of fonts are you looking at editing? A bitmap font drawing tool probably isn't too hard in a technical sense for a relatively inexperienced programmer, at least given a high-level language like Java (or a good RAD environment), but you'll still need to know basic programming techniques. If you want to actually save and load font files (even bitmap), managing the file layout would add a whole other dimension. Doable in 6-12 months? Certainly, as long as you're either familiar with programming or a very diligent learner (and don't need much of a social life). A 'finished' product? There's no such thing, in my experience. Speaking as a programmer myself, 'good enough for another release' is about as much as you can hope for...

For an outline font editor (including TrueType, PostScript, OpenType, etc.) you would need an entire other set of skills like vector drawing techniques. Knowledge of reasonably-advanced (at least Bachelor's level) mathematics would be useful, although you might possibly get away with less if you can find a very good spline-handling library. I won't even try to put a time estimate on that. I suspect even George Williams would be well challenged, starting 100% from scratch, to produce something decently usable within a year.

Typogruffer's picture

@nycion Even I tried to do something like this once. I wanted to make a kerning software but gave up on the idea as it is difficult and I don't have the required programming experience or the time. I did ask at stackexchange.com only to get my hopes dashed. You can use, as Jason mentioned fontforge, or there is something called FreeType

fvilanakis's picture

I think Theunis and Alex (altsan) have put your question in the right track, regarding technical & GUI complexity. My opinion is that even for an experienced programmer, 1 man-year is not enough to produce a decently usable vector font editor.

More than this, if you want to elevate this editor to an actual product to sell, your most optimistic estimate must be in the 3+ man-years range, taking into account features as read/write of all-font-formats (OTF/TTF/Type-1) support, Advanced vector editing GUI/techniques, Font (auto)Hinting, (auto) Kerning, Import/Export to common formats, Help & Documentation, Extensive Testing & Bug Fixing in all platforms, A web site to promote sell your product, A decent DRM system, etc.

My thoughts, -given you possible inexperience in programming- are:

=> I don't think iOS is an appropriate environment for a full vector-font editor. iPhone is too small and even iPad would present a user with a difficult interface, too far from the easiness & precision a PC/Mac can offer.

=> Learning/mastering a new language as Objective C or C++ at the same time you are working in a complex project like a Vector-Font-Editor is a guaranty of both frustration (why this crashes/not working?) and a bad final product quality. Start with a much simpler project, like e.g. a simple vector editor to read/write/edit an EPS (Encapsulated Postscript) file, and gradually add Guidelines, Grid, Snap Tools, etc. until you feel confident to handle more complex file formats and data structures.

=> Objective C is an interesting, powerful language but it works only on Mac OS/iOS environments. If you decided to go the route of learning a new language I propose a C++/Nokia Qt* combination which is actually a multi-platform solution: You write the Application once and (with one or two twinks) it compiles/runs under Windows/Mac/Linux, but be aware that Qt Creator GUI editor is not as good as MS-Visual Studio (for Windows) or X-Code (for Mac OS).
(*) Nokia Qt is an Open Source product delivered with an LGPL license, which practically means you can even use it on a commercial application without buying it, as long as you include Qt in DLLs format.

=> This is a useful/fast/free/open-source/high quality library to read & render most formats of vector & bitmap fonts files: Freetype2
You can read/render and I think you also have access to font's vector data, but it does not support editing or creating/saving a new font file.

Good luck with your project ;)

oldnick's picture

Evidently, it is very difficult to make a fully functional and reliable font generation: FontLab has been struggling to get its latest release out, abd continues to have problems playing nice with OS X. Additionally, DTL seems to be having problems putting together a WYSIWYG version of their Kernmaster software: the promised 2012 version has yet to materialize.

Once upon a time, Fontographer 3.x did yeomanlike work in a simpler world; unfortunately, since Ye Olden Tymes, "improvements" in font technology appear to have presented challenges which are not easily overcome, it seems. So, the type standards war runs parallel to the browser standards war: everyone has their own indea of what OUGHT to work, and font creators and font users have to deal with the messy results of "competition in ther marketplace." Puh-leeze...

aluminum's picture

"please no vague answers"

But it's a rather vague question. You're asking how hard it is to learn software programming. It depends. Some people pick it up as a hobby. Some spend 4-8 years to get a degree in it.

90% of the challenge is going to be learning programming.

Bert Vanderveen's picture

Ten thousand hours. That seems to be the amount of time one has to invest in a craft to become proficient in it. And common sense and personal experience seems to confirm this… So, if you can invest ten hours of your time, each day, you will be a master of programming in three years. And maybe you will have created the best software to create fonts in that period, OR be able to that after that…

Anyway, feel free to announce it here when you are ready.

pvanderlaan's picture

Evidently, it is very difficult to make a fully functional and reliable font generation
That is nonsense. The Adobe OpenType FDK is out there for everyone to use, or to implement in software. All the major font editors have this FDK built-in to generate OpenType font files. And I cannot remember that Adobe put out a similar kind of FDK for PostScript Type 1 fonts some 25 years ago. Because that was a time when the real “font wars” were happening – between PostScript and TrueType – and not now.

There is only one reason why font designers/developers have to work with tools that are less than ideal sometimes: because they are a small audience. Therefore development of font editors/tools is done by small companies – usually only one programmer – that cannot invest vast resources to make every user happy. That is how the font industry works. Deal with it.

oldnick's picture

Evidently, it is very difficult to make a fully functional and reliable font generation

That is nonsense. The Adobe OpenType FDK is out there for everyone to use...

No: that is nonsense. The AOFDK is an afterburner, not a complete font design environment. IMHO, none of the font creation packages currently available have sensible drawing tools, nor are they complete. Fontographer still suffers from Macromedia's inane decision to include fractional em sizes, and FontLab's generated TrueType fonts often fail in one or more areas when run through MS Font Validator. Plus, it appears that FontLab consistently has problems porting to Mac OS X.

So, if you can build a better mousetrap, please do...ASAP.

allanm1's picture

A great way learn programming is to have a practical and complex project to work on. Start off small and then add to it bit by bit, so that you have something that is useful and working very early on. Look at what is already out there (so you know what not to do).

It is possible to have a usable (and salable) product within 6-12 months (I know this to be true from personal experience). But it won't be finished in even 6 to 12 years!

Resources: "Fonts & Encodings" Published by O'Reilly.
Also the font file specs on the Adobe, Microsoft and Apple websites.

johan.mattsson.m's picture

I recently finished writing a font program and learning a new programming language . It took a little bit more than six months. I suggest that you start by reading the wikipedia article on Bezier curves and begin with implementing some simple vector editing tools without looking too much in to the very complex TTF and OTF specifications.

oldnick's picture

begin with implementing some simple vector editing tools...

IMHO, that's an excellent suggestion. Personally, I would recommend studying the vector editing tools (including the curve smoothing slider) in CorelDraw 9 or 10, if you can find them. The SINGLE node editing tool is vastly superior to AI's approach, and the single-level contextual menu is also preferable to FontLab's layered approach.

pvanderlaan's picture

No: that is nonsense. The AOFDK is an afterburner, not a complete font design environment.
You talked about font generation software – that is something different than a full-fledged visual editor for beziers, metrics, kerning, OpenType features, etc.

IMHO, none of the font creation packages currently available have sensible drawing tools, nor are they complete.
Define ‘sensible’, define ‘complete’. All highly subjective matter.

Fontographer still suffers from Macromedia's inane decision to include fractional em sizes, and FontLab's generated TrueType fonts often fail in one or more areas when run through MS Font Validator. Plus, it appears that FontLab consistently has problems porting to Mac OS X.
And Fontographer 3.x wasn’t without limitations? No access to all font info. No support for hinting. Ever tried generating TrueTypes with it? Or Windows Type-1 fonts?

Twenty years ago the majority of type designers only had to produce PostScript Type-1 fonts for Mac, that would predominantly be used by designers in dedicated design apps such as Quark XPress, Illustrator or Photoshop. I agree that was easy and convenient.
These days are over, and we have to support customers who use many more applications on increasingly more operating systems. So we have to deal with the same kind of headaches that most software developers have to do: compatibility. But in return we also have a much larger market out there.

k.l.'s picture

Regarding simple vectore editing tool vs AFDKO vs full-fledged visual editor etc, it makes sense to separate the different elements, especially drawing tool and font-generation tool. Each is a challenge in itself, at least if one wants to get it right. It is not by accident, I assume, that full-fledged editors rely on existing libraries e.g. for font generation, like a built-in AFDKO. Once you have this separation, you are free to combine any drawing tool with any font-generation tool.

Rob O. Font's picture

Congratulations on Birdfont Johan! People have been asking for more modern windows font tools, I hope this is one.

oldnick's picture

Paul--

I presume that English is not your first language, which may explain your reading comprehension problems. The subject of this thread is Font Editing software; hence, that was the subject I was discussing, so my comments about the AFDKO stand, and your comments remain nonsense.

As I understand it, Apple and Microsoft worked jointly on the Truetype format to overcome some of the limitations of Apple's original implementation of PS1 fonts, especially the annoying problems of separate screen and printer fonts. Also, in my experience, Fontographer 3.x did a quite credible job of generating TTF fonts: many of my initial, humble freeware efforts from fifteen years ago are still being used by cheapskates; in fact, I was somewhat surprised to find several of them preinstalled on the HP computer I bought about six years ago.

No, FOG 3x wasn't a perfect design and production tool, but font life was a little simpler then. Sometimes, less is more...

Rob O. Font's picture

Eh? What? I presume that font tools and formats are not your native languages ;) Apple made TT alone and licensed it to MS. Aside for a couple switches and the tables added in the Opentype conquest, not much TT has been changed by MS. Adobe made "PS1" alone and was solely responsible for the pre-OS7 Mac implementations of type one font tech.

Fog 3.x made bloated TT, still does, so does FL. Those old tools were simple, and if all you make today are what you made then, you are fine. If not, then you need to get out more often.

Since the development of UFO, tool development based on monumental application development and a proprietary font format, vs really good modules, is a bit silly, but still they try.:)

oldnick's picture

David,

You presume too much :Þ Apple has always been about making technology as idiotproof as possible; unfortunately, American culture seems to be quite adept at creating bigger and better idiots. MS improved a marginal product: by calling the process collaboration, I was being uncharacteristically kind to Apple. And I am well aware of Abode's role with the PS1 format: in the 1980s, I operated dedicated typesetting equipment--the kind real typographic professionals used before the advent of desktop publishing/design by divas. In fact, I created my first digital fonts in 1983 for the Chyron IV character generator at KXAS-TV, the NBC affiliate in Fort Worth-Dallas.

Just sayin’…

Rob O. Font's picture

By 1983 I was kerning fonts on the side of the Stardust from a jet pack. Just saying'.

"...MS improved a marginal product: by calling the process collaboration, I was being uncharacteristically kind to Apple"

I hope you have a single example of this. The history of TT is written in the Wikipedia correctly, more or less, and Apple's solo invention of the required TT tables is not in question anywhere, outside of your apparent insistence otherwise.

oldnick's picture

David,

You do know, of course, that sarcasm is the lowest form of wit, don’t you? Evidently not…

Syndicate content Syndicate content