Creating a Computer Modern Math Symbol Font in Adobe Symbol Encoding
by Paul Murrell

Most of the symbols in this font (both character metric information and character outlines) are simply copied directly from the existing Computer Modern fonts provided by the AMS, Blue Sky, and Y&Y. Some characters have slightly been modified and/or combined to form new characters.

From my reading of the description of these fonts, I am allowed to replicate, modify, and redistribute these fonts (as long as I remove the AMS copyright notice and do not use "Computer Modern" as the font name). Obviously, if I am wrong about this, please let me know!

The creation of the new font involves the following steps:

  1. Copy AFM and PFB files from the AMS site: cmr10, cmsy10, cmmi10, cmex10 from here and msam10 from here.
  2. Use the t1disasm program (part of the t1utils package) to convert the PFB files to a plain text (RAW) format. For example ...
     
        t1utils-1.32/t1disasm cmr10.pfb cmr10.raw
    
  3. For each character in the Adobe Symbol encoding, lift the relevant character out of the AFM (for metrics) and RAW (for outlines) files, and construct a new AFM and RAW file for the new font. This is just a text processing task, so any scripting language would do; I used R.
  4. Create a new PFB file for the new font using the t1asm (also part of t1utils).
     
        t1utils-1.32/t1asm -b cmsyase.raw cmsyase.pfb
    

Problems

Proper font designers probably don't like this automated approach much(!).

Some of the character outlines are in "funny" positions; often not a problem when using them for mathematical annotations because they are positioned specially, but in use as a normal character they come out (well) below the normal baseline. Just a matter of modifying the first rmoveto in the outline (plus the character bounding box)(?) Have already done this for the bracket[left|right][bt|tp].

Some characters are pretty ugly. For example, I want to try again with the /integraltp and /integralbt characters.

Some characters are actually wrong. For example, I have used /similarequal from cmsy10 for /congruent, but that's not quite right.

The lowercase greek symbols are italic (they come from cmmi10) rather than upright.

Some characters are still missing:
/underscore I should be able to customize something. The trick will be to get the thickness of the line right (probably by looking at the width of some other simple line character in one of the fonts).
/radicalex Same issue as for underscore; additional problem of getting it at the right height to match up with the radical symbol(?)
/Euro There are TeX packages with fonts containing different versions of the Euro symbol (e.g., eurosym). Simply a matter of finding one that has a licence that allows me to extract the symbol for my font(?)
/carriagereturn There are lots of lines and arrows already there, so just a matter of scavenging various bits and sticking them together(?)
/registerserif
/trademarkserif
/registersans
/copyrightsans
/trademarksans
I've had a go at /copyrightserif by just combining the /circlecopyrt from cmsy10 with the /c from cmr10; do something similar for the rest(?)