Bengali Template Font

Note

This is a brief description of the Bengali template font available here, along with (towards the end) some instructions on how to use it.

Purpose

Our aim was to create a Template Bengali Opentype font, which would serve as a starting point for others who wish to create their own fonts. This means a font containing

An initial RFC that was written before starting this effort can be found here. This explains, among other things, naming conventions -- which form the basis for substitution rules.

Choice of software and consequent problems

We assume that the font designer has access to tools (i.e., a Font Editor) that can be used to create the glyph outlines. We are more concerned with taking a collection of glyphs and making that into a valid Bengali Opentype font. Software that can be useful here are VOLT, Pfaedit and ttx/fonttools.

Both VOLT and Pfaedit can deal with GSUB/GPOS tables. (Pfaedit had problems with GPOS tables in the version I currently have, maybe that has been fixed.) For users on GNU/Linux and other supported systems, Pfaedit is the best thing. On Windows, on the other hand, VOLT is the obvious choice. Whatever our personal preferences, we felt it best to do things in such a way that both could be used. (For example, one could want to use Fontlab, or even Pfaedit, to design the glyphs, and then use VOLT to add the layout tables.) This decision makes things slightly difficult, as discussed below.

Deciding on a Collection of glyphs

This is critical, as the set of glyphs as well as their order in the font would be important when defining ligatures, especially when working across software. One question is whether ASCII glyphs should be included (we decided not to), more important is to decide on the exact list of conjuncts to include. The list we decided on is available here. New ones can be added, though that may be slightly difficult.

Creating the font

The actual font was created from scratch in Pfaedit (with many glyphs taken from Likhan). This basically meant creating a position for each of the glyphs we wanted. No opentype features were added at this point, but all glyphs were named according to the naming conventions outlined here.

Adding the OT Layouts

Opentype layouts were initially added using VOLT on Windows. This involved first naming all the glyphs (again), and we decided to use exactly the same names as before. This would have been very boring, except that Emacs' picture-mode rectangular cut and paste (C-c C-k and C-c C-y) features made life a lot easier by allowing the Pfaedit names (grepped from the .sfd file) to be reused (by editing the `VOLT Export Project' file).

This need to keep two distinct definitions of the list of glyphs (Pfaedit and VOLT) could potentially make life very difficult. Things are not that bad if glyphs are added at the end. However, if even one glyph is added somewhere in the middle, the VOLT Project Data file will have to be modified non-trivially.

Next the actual opentype layout features were added using VOLT. This layout data was subsequently exported as this file, which can be reused with any new font with the same glyph positions by importing it again from within VOLT. One thing to look out for when doing this (in order to make the font work with Pango, for instance) is to make sure the order of features in the GSUB table is correct. In fonts shipped by VOLT, this is determined by the order of `substitutions' in VOLT's internal representation. The actual order should be:

init
nukt
akhn
rphf
blwf
half
pstf
vatu

pres
abvs
blws
psts

haln

And we have a font

That's basically it. A truetype font without VOLT tables was `shipped' from VOLT. This could be used both on Windows and GNU/Linux, and when opened by Pfaedit, retained all the opentype GSUB features.

How to create New Fonts

The set of glyphs in the template font are intended to be as complete as possible, so if you feel that you need some more, contact us and we would be willing to consider your request. The opentype features are meant to be the most basic that would be appropriate for all fonts with this glyph set, so might not contain everything you want (especially any GPOS features).

As a first step, replace the glyphs with your own, using your favorite font editor. See if the resulting font works on all platforms you want it to work on. If it does and you don't want any more OTL features, you are done.

If it doesn't work on Windows, open the font in VOLT, import the VOLT Data for the font using VOLT's `Import Project' menu item. While you are at it, also add any new features that you might want. On GNU/Linux, do the same on Pfaedit. Keep in mind the fact that layout features added on VOLT can be transferred over to Pfaedit, but features added in Pfaedit can NOT be transferred to VOLT.

Note that all this is made available to you under the GNU General Public License which means, among other things, that any work that is derived from it must also be released under the same license (if at all released). So, don't directly reuse any of the stuff here unless you are ready to do that.

Adding New Features to the Template Font

The list of features in the template font is by no means frozen, at least not until we are confident that it is stable enough. Addition of new features will be slightly inconvenient (and make the design less elegant), but possible. If you come across a feature that you think should be in the Template font, let us know. For now (until Pfaedit matures some more), we recommend that any layout changes be made in VOLT, stored in a VOLT project file for future reuse, and carried over to Pfaedit.

Files and other QA stuff

Here's a list of files available here

The last two PDF files illustrates some differences between Windows and GNU/Linux Layout systems used by Openoffice (e.g., lack of initial features and some bugs in the latter). (They use slightly different versions of the font, but that's not an issue.)
deepayan@bengalinux.org
Last modified: Thu May 1 00:27:34 CDT 2003