I find it bizarre that when dealing with fonts, you can’t copy an outline out of Illustrator and paste it into the Character Cell. This would make things so much quicker and easier, and produce a better result, than having to export each character as a Hi Res bitmap or tiff, and then have the program reinterperate the contours.
While I love the end result of your program, having to export each character ouline first is an absolute pig of a workflow.
While EPS import was a standard feature of programs like Letraset, Font Studio, Font Lab, and some programs I can no longer run under Mac OS9, and they ranged in price from $100 upto the $10,000. the only one real left is FontLab and that sucks.
I have tried using vector graphics with FCP and the go crazy when cut and pasted. I tried importing them as WMF files and they are improved but still a mile away form the vector graphic I created in Illustrator CS.
I hope they consider improving this. Other font editors allow smooth trasnition from vector graphics.
I requested EPS (or .AI) import, or clipboard pasting into FCP many years ago, nothing came out of it. I don’t understand what people even do in FCP, surely not designing fonts from scratch. I can do things in my vector editor that FCP will never be able to do.
A native .EPS or .AI (Illustrator version 7 would do) import, without retracing the image (because of loosing details) would be a dream come true.
As far as I know, nothing has changed since this post. Font Creator still uses Truetype Quadratic Bezier Curves, not Postscript Type One Cubic Bezier Curves. I am sure that the internal format will never be changed, so import of postscript outlines will never give a one to one conversion, though I am sure Erwin will improve vector import if he can. I wonder, though, if it is worth the effort.
People do indeed design fonts from scratch in FontCreator. Many may scan bitmaps of fonts drawn on paper or cut and paste via the Windows clipboard.
All it comes down to is learning to use the drawing tools in FontCreator instead of those in Adobe Illustrator. If you have Corel Draw, you could try exporting to TTF from there, and then fix the font metrics etc., in FontCreator.
I can do things in my vector editor that FCP will never be able to do.
Have you tried persuading Adobe to produce a Truetype Export filter for their program? I can do things in FontCreator that Xara Extreme or Adobe Illustrator may never do — create Truetype Fonts.
I’ve never made truetype fonts on PC since I’m personally not satisfied with the tools available. I did vector fonts easily on Acorn Archimedes (drag and drop my vector object simply onto a glyph, change kerning, spacing, etc, save, done.). I pixelled tons of fonts on old computer systems and for some PS1 Games.
BTW, below find an original exported Illustrator 7 ASCII file, I skipped all ‘description’ sections which ‘look like’ they can be skipped anyway, since we only want the vector data, fancy fillings and such can be ignored. This data is a font converted to curves, Helvetica Black, Letter A. Commands like %AI5_BeginLayer can be skipped too, since layers can be ignored. All Necessary Vector data can be found between “0 J” and LB:
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.25 w
2 j
0 d
0 J
0.00 0.00 0.00 (Black) 0 1 Xx
*u
162.56 269.77 m < (1) This is the GREEN shape
133.75 269.77 l
147.87 319.66 l
162.56 269.77 l < (2) Endpoint is the same the startpoint(1) to close this shape
f
119.83 222.39 m < (3) This is the RED shape
125.05 240.76 l
170.49 240.76 l
175.91 222.39 l
221.35 222.39 l
171.46 361.63 l
125.05 361.63 l
75.16 222.39 l
119.83 222.39 l < (4) Again, tle last point has to be the same as (3) to close this shape
f
*U
LB
%AI5_EndLayer
The black shape on the left is the result after parsing the .AI file above.
I’m just posting this to show that it looks like to me there is not much essential information which needs to be interpreted of the .AI file. I’m just a basic hobby programmer with little knowledge of bit of bits and bytes myself. I wouldn’t be able to do it myself and it surely it will take weeks/months to interprete this data. I would like to help if possible, that’s all.
Thanks for your support. Your AI is an example that shows some basic features. We might be able to support such basic commands, but what does a file look like when it is actually created from scratch with Adobe Illustrator? How to cope with open contours, circles, curves and other objects?
Yes, the AI i posted shows some very basic features: Lines.
Now, below is a FULL example of an Illustrator 7 format created from scratch. I don’t want to scare you off since it looks weird, buy mind you, most of the sections can be simply ignored!
Mark the script below, copy it, past it into a text editor, save the text with the extension . AI and it can be back loaded into Adobe Illustrator. It contains a black circle.
%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(TM) 7.0
%%For: (owner of this software)
%%Title: (Untitled3 *)
%%CreationDate: (22/03/07) (08:33 PM)
%%BoundingBox: 240 334 388 483
%%DocumentProcessColors: Cyan Magenta Yellow Black
%%DocumentNeededResources: procset Adobe_level2_AI5 1.2 0
%%+ procset Adobe_packedarray 2.0 0
%%+ procset Adobe_ColorImage_AI6 1.1 0
%%+ procset Adobe_cshow 2.0 8
%%+ procset Adobe_cmykcolor 1.1 0
%%+ procset Adobe_customcolor 1.0 0
%%+ procset Adobe_typography_AI5 1.0 1
%%+ procset Adobe_pattern_AI3 1.0 1
%%+ procset Adobe_Illustrator_AI5 1.2 0
%AI3_ColorUsage: Color
%AI5_FileFormat 2.0
%%EndComments
%%BeginProlog
%%IncludeResource: procset Adobe_level2_AI5 1.2 0
%%IncludeResource: procset Adobe_packedarray 2.0 0
%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0
%%IncludeResource: procset Adobe_cshow 2.0 8
%%IncludeResource: procset Adobe_cmykcolor 1.1 0
%%IncludeResource: procset Adobe_customcolor 1.0 0
%%IncludeResource: procset Adobe_typography_AI5 1.1 0
%%IncludeResource: procset Adobe_pattern_AI3 1.0 1
%%IncludeResource: procset Adobe_Illustrator_AI5 1.2 0
%%EndProlog
%%BeginSetup
Adobe_level2_AI5 /initialize get exec
Adobe_packedarray /initialize get exec
Adobe_ColorImage_AI6 /initialize get exec
Adobe_cshow /initialize get exec
Adobe_cmykcolor /initialize get exec
Adobe_customcolor /initialize get exec
Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
Adobe_pattern_AI3 /initialize get exec
Adobe_Illustrator_AI5 /initialize get exec
%%EndSetup
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.50 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_89820080) 0 x
314.76 483.60 m < Circle Description Data
355.73 483.60 388.99 450.34 388.99 409.37 c
388.99 368.39 355.73 335.13 314.76 335.13 c
273.78 335.13 240.53 368.39 240.53 409.37 c
240.53 450.34 273.78 483.60 314.76 483.60 c
f
LB
%AI5_EndLayer
%%PageTrailer
showpage
%%Trailer
Adobe_Illustrator_AI5 /terminate get exec
Adobe_level2_AI5 /terminate get exec
Adobe_packedarray /terminate get exec
Adobe_ColorImage_AI6 /terminate get exec
Adobe_cshow /terminate get exec
Adobe_cmykcolor /terminate get exec
Adobe_customcolor /terminate get exec
Adobe_typography_AI5 /terminate get exec
Adobe_pattern_AI3 /terminate get exec
%%EOF
This is the circle created in my vector program and exported it as .AI, which is the code above. If you like I can create more examples, which might be better to sent you per email though instead of spamming this forum.
And this is the same circle as above, except the top and left bezier curve points have been moved. See the image first:
And the Code: (I skipped the the first sections, since they’re always the same). EDIT: the only necessary thing changes is the %%BoundingBox: area, which is basicly a box discribing a 2d space area in which objects/shapes below will be drawn. Another thing that changes in the top area is the CreationDate and Time, if you’d like to interprete these
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.50 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_89820080) 0 x
314.76 483.60 m
355.73 483.60 388.99 450.34 388.99 409.37 c
388.99 368.39 355.73 335.13 314.76 335.13 c
273.78 335.13 240.53 368.39 240.53 409.37 c
240.53 483.54 240.27 483.60 314.76 483.60 c
f
LB
%AI5_EndLayer
Thanks for sharing more samples. Would it be sufficient for basic AI support, to only process following path construction operators:
m - changes the current point to x, y
l and L - appends a straight line segment
c and C - appends a Bézier curve *
Bézier curves need to be converted to TrueType curves.
For me, definately! I never asked for more, simply because its not needed. On top of that, I always convert my created objects into shapes which can be broken down to exactly what you’re looking into (m, l/L, c/C). Yay!
OK, here are 3 more:
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.25 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_88477704) 0 x
111.28 737.97 m
112.38 714.71 l
109.60 714.71 l
109.07 718.81 108.34 721.73 107.41 723.49 c
105.90 726.32 103.89 728.40 101.37 729.74 c
98.86 731.08 95.56 731.75 91.46 731.75 c
77.50 731.75 l
77.50 655.98 l
77.50 649.89 78.15 646.09 79.47 644.57 c
81.32 642.53 84.18 641.50 88.03 641.50 c
91.46 641.50 l
91.46 638.80 l
49.41 638.80 l
49.41 641.50 l
52.92 641.50 l
57.11 641.50 60.09 642.77 61.84 645.31 c
62.92 646.87 63.45 650.43 63.45 655.98 c
63.45 731.75 l
51.53 731.75 l
46.90 731.75 43.61 731.41 41.66 730.73 c
39.12 729.80 36.95 728.02 35.15 725.39 c
33.35 722.76 32.27 719.20 31.93 714.71 c
29.15 714.71 l
30.32 737.97 l
111.28 737.97 l
f
LB
%AI5_EndLayer
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.25 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_88477704) 0 x
*u
132.57 742.80 m
134.61 742.80 136.36 742.08 137.80 740.64 c
139.23 739.20 139.95 737.46 139.95 735.41 c
139.95 733.36 139.23 731.61 137.80 730.14 c
136.36 728.68 134.61 727.95 132.57 727.95 c
130.52 727.95 128.77 728.68 127.30 730.14 c
125.84 731.61 125.11 733.36 125.11 735.41 c
125.11 737.46 125.83 739.20 127.27 740.64 c
128.70 742.08 130.47 742.80 132.57 742.80 c
f
138.64 707.76 m
138.64 653.93 l
138.64 649.74 138.94 646.95 139.55 645.56 c
140.16 644.17 141.06 643.14 142.26 642.45 c
143.45 641.77 145.64 641.43 148.80 641.43 c
148.80 638.80 l
116.26 638.80 l
116.26 641.43 l
119.53 641.43 121.72 641.75 122.84 642.38 c
123.96 643.01 124.85 644.06 125.51 645.52 c
126.17 646.99 126.50 649.79 126.50 653.93 c
126.50 679.75 l
126.50 687.02 126.28 691.72 125.84 693.87 c
125.50 695.43 124.96 696.51 124.23 697.12 c
123.50 697.73 122.50 698.04 121.23 698.04 c
119.87 698.04 118.21 697.67 116.26 696.94 c
115.23 699.57 l
135.42 707.76 l
138.64 707.76 l
f
*U
LB
%AI5_EndLayer
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.25 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_88477704) 0 x
111.28 737.97 m
112.38 714.71 l
109.60 714.71 l
109.07 718.81 108.34 721.73 107.41 723.49 c
105.90 726.32 103.89 728.40 101.37 729.74 c
98.86 731.08 95.56 731.75 91.46 731.75 c
77.50 731.75 l
77.50 655.98 l
77.50 649.89 78.15 646.09 79.47 644.57 c
81.32 642.53 84.18 641.50 88.03 641.50 c
91.46 641.50 l
91.46 638.80 l
49.41 638.80 l
49.41 641.50 l
52.92 641.50 l
57.11 641.50 60.09 642.77 61.84 645.31 c
62.92 646.87 63.45 650.43 63.45 655.98 c
63.45 731.75 l
51.53 731.75 l
46.90 731.75 43.61 731.41 41.66 730.73 c
39.12 729.80 36.95 728.02 35.15 725.39 c
33.35 722.76 32.27 719.20 31.93 714.71 c
29.15 714.71 l
30.32 737.97 l
111.28 737.97 l
f
*u
132.57 742.80 m
134.61 742.80 136.36 742.08 137.80 740.64 c
139.23 739.20 139.95 737.46 139.95 735.41 c
139.95 733.36 139.23 731.61 137.80 730.14 c
136.36 728.68 134.61 727.95 132.57 727.95 c
130.52 727.95 128.77 728.68 127.30 730.14 c
125.84 731.61 125.11 733.36 125.11 735.41 c
125.11 737.46 125.83 739.20 127.27 740.64 c
128.70 742.08 130.47 742.80 132.57 742.80 c
f
138.64 707.76 m
138.64 653.93 l
138.64 649.74 138.94 646.95 139.55 645.56 c
140.16 644.17 141.06 643.14 142.26 642.45 c
143.45 641.77 145.64 641.43 148.80 641.43 c
148.80 638.80 l
116.26 638.80 l
116.26 641.43 l
119.53 641.43 121.72 641.75 122.84 642.38 c
123.96 643.01 124.85 644.06 125.51 645.52 c
126.17 646.99 126.50 649.79 126.50 653.93 c
126.50 679.75 l
126.50 687.02 126.28 691.72 125.84 693.87 c
125.50 695.43 124.96 696.51 124.23 697.12 c
123.50 697.73 122.50 698.04 121.23 698.04 c
119.87 698.04 118.21 697.67 116.26 696.94 c
115.23 699.57 l
135.42 707.76 l
138.64 707.76 l
f
*U
LB
%AI5_EndLayer
And 2 intersected, overlapping objects:
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.00 0.00 0.00 1.00 K
0.50 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_88477704) 0 x
*u
73.74 751.76 m
58.20 741.10 47.17 726.82 41.49 708.26 c
95.49 688.76 l
73.74 751.76 l
b
74.91 715.39 m
87.99 729.27 l
77.86 741.28 61.37 749.29 51.24 746.51 c
51.57 735.22 64.65 722.71 74.91 715.39 c
b
*U
LB
%AI5_EndLayer
[/code]
And a 3rd shape has been added…
%%EndSetup
%AI5_BeginLayer
1 1 1 1 0 0 0 0 0 0 Lb
(Layer 1) Ln
1 XR
0.00 0.00 0.00 1.00 K
0.50 w
2 j
[ ] 0 d
0 J
0.00 0.00 0.00 1.00 (_88477704) 0 x
*u
73.74 751.76 m
58.20 741.10 47.17 726.82 41.49 708.26 c
95.49 688.76 l
73.74 751.76 l
b
74.91 715.39 m
87.99 729.27 l
77.86 741.28 61.37 749.29 51.24 746.51 c
51.57 735.22 64.65 722.71 74.91 715.39 c
b
*U
84.24 756.27 m
90.99 741.64 l
98.87 765.64 l
84.24 756.27 l
b
LB
%AI5_EndLayer
This might be something than can be added within a reasonable time frame. I’ve added this to the to-do list and hope to include it in the next upcoming release.
Well, I hope i’m not too greedy, but here is the absolute killer import which every Illustrator user would use: Auto Import with Auto Grabbing, Auto Kerning, see the image below:
On the VERY left is a thin shape (4 points), this height discribes the height of the entire font to be imported, the width of the shape is not important and can be ignored.
From top to bottom:
On the top can be found 2 lines (shapes), each shape contains of 4 line segments. Their witdh is important, their height can be ignored.
Line1 (top): Is the entire witdh of each letter found below. All top lines would be found on the same height.
Line2 (middle): The kerning space for each letter found below. All these lines would be found on the same height as well.
Letter: The letter itself. They are all aligned on the proper Y-space and shouldn’t be realigned. Obviously it needs some intelligence here to grab the letter out of the file and place it into the glyph.
The font contains all letters from ASCII code 32 to 126. The most important rule would be that Guidelines or letters must NOT overlap, and a big enough gap must be set from each letter to letter. The auto import function could be customised from which letter (32) to which letter (126) symbols will be found and assigned to. A Demo font in .AI format should be included. Further, proper adjustments could be done in FCP, but most of the work would be already done. I’m sure this will attract many new users.
It would be brilliant if FCP could create an .AI (in the format above) out of any Font it can read. You could export any .ttf, modify it in Illustrator (or alike), and then export it back into FCP. That’s mindblowing.