This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.
This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.
Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.
Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.
You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.
Please do not email me about this project without reading the disclaimer above.
This is a difficult project. To do it well you will need the eye of an artist or font designer or artist. You will also have to have a good grasp of mathematics. The project could make you obscenely rich, or at the very least let you revolutionise the world of fonts.
We need a way to generate fonts with the full set of Unicode glyphs, or pruned back to save transmission time of glyphs not used.
Ideally font outline could be generated programmatically on the fly, without having to download fonts at all, given just some magic characteristic numbers.
Think of a font as like a set of wire frames for each glyph, with some magic paint applied to them, that automatically thickens and thins in aesthetically pleasing ways, forming little feet (serifs) or endings. The font could be thought of as defined by the physical properties of the magic paint. It could also be defined by a mathematical transform (twisting) of the wire shapes, e.g. slanting them for italics. You can generate font outlines mathematically for the entire Unicode character set.
You could try mathematically reproducing randomly selected hand-made fonts. You might have to introduce new wire frames, new transforms or new styles of paint to be able to approximate them and fill in their missing glyphs.
You can try throwing random specifications at your generator and see if it comes up with a new interesting font.
This is a quite different sort of font designer from the usual tools. This one requires no manual dexterity. Imagine a font as like a strange viscous liquid paint that flows over frames shaped like letters. It has very peculiar properties of surface tension that make it form serifs or bulging loops. You tweak the physical properties of the liquid and watch the various letter shapes evolve. Because they are generated from physical properties, all the letters are naturally consistent, without you having to manually tweak them to look the same.
You might specify the thickness, tallness, balloonness, serifiness, stoginess (all strokes same thickness), using sliders and watch the fonts change before your eyes. Perhaps the typeface literature has some additional adjectives that could be converted into mathematical transforms.
When you generate a typeface you like, you could capture it as a PostScript or TrueType font.
You get to choose alternate stick frameworks for the letters and possibly the ability to enter your own connecting points on a grid to generate totally new glyphs that do not even exist in Unicode for the private space.
Adobe has a similar concept called master fonts for warping a given font in various ways.
A related project would be to take a font and find the characters that tend to look alike and find an easy way to modify them so they look sufficiently different, even at small font sizes, to increase legibility, a tool even someone without artistic skill could use. It might even be so crude as substituting in a character from another font entirely. For example it might exaggerate the , fragment in a ; to make it look distinctly different from :.
To start, you might implement font morphing, allowing you to create fonts intermediate between two existing fonts.
A finished font needs hinting — rules for how to render and anti-alias very small glyphs. This a separate problem in itself and a difficult one. You need to automate the process of adding hints, or your generated fonts will net be perceived to be of acceptable quality. You might use evolutionary algorithms, neural nets, try-all-possibilities algorithms, tools to help you home in on the answer with quick renderings of an attempt.
If you succeeded in this project, someone could generate fonts on the fly, create subtle variations, extending existing fonts to cover the missing glyphs (a legal minefield), let amateurs design professional looking fonts, recreate fonts used in ancient documents… Given any existing font, you could recreate it, or create something slightly different. You will be able to choose a font by tweaking the spec parameters rather than searching through hundreds of catalogs.
This page is posted
Optional Replicator mirror
Please read the feedback from other visitors, or send your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.
Your face IP:[188.8.131.52]
You are visitor number|