This content has been marked as final. Show 5 replies
The FontDict is correctly constructed. The problem is that this is a Type 3 PostScript font, where the glyph outlines are described by regular Postscript drawing operators, like Adobe Illustrator graphics, rather than by Type 1 binary operators. MakeOTF only supports glyph outline data in the Type 1 or CFF formats. In order to use makeotf with yourfont, you will need to convert it to Type 1.
If you have Adobe Illustrator sources for the glyph outlines, then you can get these into FontLab, and then use FontLab to make Type 1 font. If you are good at scripting, you could also edit this text representation into the representation created by the FDK 'detype1' program, and then use the 'type1' program to compile this into a Type 1 font. To see the text format used by 'type', just run the 'detype1' program on any Type 1 font file. You can use the 'tx' program to extract a Type 1 font from any OTF or TTF font.
An example of how you can use the FDK command-line tools for this kind of operation:.
# Extract a Type 1 font file from an OTF font
tx -t1 <source OTF font file name> <new Type 1 font file name>
# Convert Type 1 font to a human-editable text representation
detype1 <Type1 font file name> <new text file name>
#do manual edits on the <new text file name>
#compile text file back into a Type 1 font
type1 <old text file name> < new Type1 font file name>
#convert Type 1 font to CFF
tx -cff <Type1 font file name> < new CFF font file name>
#Finally, stick the new CFF font data back into the original OTF font
sfntedit -a "CFF"=< CFF font file name> <source OTF font file name>
Note that the last works only if you did not change glyph order, as many OTF tables references glyphs by glyph ID.
- Read Roberts
Thanks very much for this. I guess that my criticism is that the error message doesn't lead me to think of your explanation!
I have now recreated the font using Fontlab and Illustrator and it seems to work.
I typeset atlas indexes using many more accented characters than are usually available in commercial fonts. I want to make up fonts which have all the accents I need plus the symbols I use, most of which do not appear in the Unicode standard. My plan is to convert standard fonts using the package OTFoundry 3.0 which seems to generate the accents I need automatically and to add in my symbols to each font using the Unicode Private Use Area to encode them.
For my first attempt at this I converted a .pfa copy of Helvetica Medium and put the result together with my symbol font using mergeFonts. It gave quite a number of messages about hinting and produced an output font which I can proof with tx. However Suitcase X1 v11.0.2 on my Mac seems to have problems with it
Each of the fonts I was merging opens OK in FontLab, but the merged result fails to open with the message "Import failed for the following reason: TrueType font file is corrupted and cannot be opened in FontLab. It may not be a valid TrueType font file." I am a little surprised by "TrueType" as each of the input fonts was PostScript. No doubt I am misusing mergeFonts - or perhaps I should be doing the whole thing another way!
Something is clearly seriously wrong with the merged font. Is it possible that your symbol font is actually a TrueType font? This is the default format for FontLab. If not, then send me the two font files you are trying to merge, and the command-line that you are using.
As an aside, I hope know that no Mac OS will know what to do with a pfa file - Mac OSX needs either TTF, or OTF, or an old Type 1 Mac font, comprised of a suitcase file and a printer file.
- Read Roberts email@example.com
As far as I can see both fonts are PostScript - at any rate the first four characters of each are "OTTO". I will send you the fonts and the cammand-line.
I have access to both Mac and PC fonts and I know that they aren't interchangeable!
I think the main problem is that MakeOTF only knows about type1 fonts and it would not recognize a Type3 one.