Data conversion apparatus and method using control points of a curve

A curve conversion apparatus can automatically convert a cubic curve into a quadratic curve and automatically convert data for outline font that are constituted by cubic curves and straight lines into data for outline fonts that are constituted by quadratic curves and straight lines. According to this apparatus, control points of a cubic curve, such as a cubic Bezier curve or a cubic B spline curve, are employed to acquire control points of a quadratic curve, and the acquired control points are stored.

BACKGROUND OF THE INVENTION 
1. Field of the Invention 
The present invention relates to a data conversion apparatus and method 
that can be applied to a display device that employs a quadratic curve or 
a cubic curve to represent figures, a CAD system, and an outline font 
processing system. 
2. Related Backgound Art 
Conventionally, an increase in the order of a curve has been easily 
performed in the processing for a curve that is employed to represent the 
outline of a figure. When the order is decreased, however, the control 
points for the curve are newly redetermined by human effort. Or, with no 
reference to a higher curve, a new lower curve is produced from a bit map 
of the figure. 
Since the conventional example, however, involves human effort, the steps 
in the procedure as well as the conversion costs are increased. Further, 
when a lower curve is generated directly from a bit map for a figure, the 
results are not very accurate, and in the long run, human effort must be 
relied upon. 
SUMMARY OF THE INVENTION 
To overcome the above described shortcomings, it is an object of the 
present invention to provide a data conversion apparatus and its method 
that can automatically acquire control points for a lower curve directly 
from a higher curve. 
It is another object of the present invention to provide a data conversion 
apparatus and its method that can automatically and accurately acquire 
control points for a lower curve from a higher curve. 
It is an additional object of the present invention to provide a data 
conversion apparatus that comprises: 
input means for receiving data for control points of a higher curve; 
conversion means for converting the data for the control points that form 
the higher curve into data for control points of a lower curve; and 
output means for outputting the data acquired for the control points of the 
lower curve. 
It is a further object of the present invention to provide a data 
conversion apparatus that comprises: 
input means for receiving outline font data that consists of cubic curve 
data; 
means for reading data for control points of the cubic curve data that 
establishes the outline font data that are received; 
calculation means for acquiring data for control points of a quadratic 
curve from the data for the control points that are read out; 
generation means for employing the data that are acquired for the control 
points to produce data for an outline font that uses quadratic curves; and 
data storage means for storing the outline font data that are produced. 
It is still another object of the present invention to provide a data 
conversion method that comprises the steps of: 
receiving data for control points of a higher curve; 
converting the data for the control points that constitute the higher curve 
into data for control points of a lower curve; and 
outputting the data acquired for the control points of the lower curve. 
It is a still further object of the present invention to provide a data 
conversion method that comprises the steps of: 
receiving outline font data that are constituted by cubic curve data; 
reading data for control points of the cubic curve data that form the 
outline font data that are received; 
calculating data for control points of a quadratic curve from the data, for 
the control points, that are read out; 
producing data for outline font that uses quadratic curves by employing the 
data for the control points that are acquired; and 
storing the outline font data that are produced.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
Embodiment 1! 
FIG. 1 is a diagram that represents the feature of the present invention 
most precisely. In FIG. 1, an input device 1 receives a cubic Bezier curve 
that is stored in advance in a storage device, such as an FDD (floppy disk 
drive) or an HDD (hard disk drive) (neither or them shown). A CPU 2 
controls the entire apparatus and performs the calculations. A ROM (Read 
Only Memory) 3 is employed to store the control procedures and the 
calculation procedures for this apparatus. A RAM 4 (Random Access Memory) 
4 is employed as a temporary storage area during the control process or 
the calculation process. An output device 5 outputs a quadratic B spline 
curve, which is obtained after the completion of the conversion by this 
apparatus, to a display device or a printer (neither of them shown), or to 
a storage device, such as an FDD or an HDD. This embodiment may be 
combined with software or hardware at a work station. 
In FIG. 2 are shown a cubic Bezier curve, which is an input data form of 
the apparatus according to the present invention, and its expressions. A 
Bezier curve is represented that is defined by four points, P0, P1, P2, 
and P3. When these four points are located as is shown in FIG. 4, the 
locus of the Bezier curve is as indicated by A. 
In FIGS. 3A through 3C is shown a quadratic B spline curve, which is an 
output data form of the apparatus of the present invention. In FIG. 3A is 
shown a quadratic B spline curve that is defined by four points Q0, Q1, 
Q2, and Q3. When these four points are positioned as is shown in FIG. 3A, 
the locus of the quadratic B spline curve is as indicated by B. In FIG. 
3B, the quadratic B spline curve that is defined by the points Q0, Q1, Q2 
and Q3 is divided into quadratic Bezier curves. As is apparent from FIG. 
3B, the quadratic B spline curve can be divided into two quadratic Bezier 
curves, Q0-Q1-(Q1+Q2)/2, and (Q1+Q2)/2-Q2-Q3. In the same manner, for a 
quadratic B spline curve that is defined by Q0, Q1, . . . Wi, the curve Q1 
to Wi-1 that excludes both ends Q1 and Wi can be divided into quadratic 
Bezier curves at the middle point of the adjacent two points. In FIG. 3C, 
a quadratic Bezier curve that is defined by Qa, Qb, and Qc and its 
expressions are shown. 
In general, a lower curve can be represented by a higher curve, but the 
reverse is not possible. To decrease the order of the curve, therefore, it 
is necessary to approximate a higher curve by employing one or more lower 
curves. 
A Bezier curve has the following characteristics. 
(1) A Bezier curve is defined by two end points and an intermediate point. 
A quadratic Bezier curve has one intermediate point, while a cubic Bezier 
curve has two intermediate points. 
(2) A straight line that extends from the end points to the adjacent 
intermediate points corresponds to a tangent at the end points. 
(3) It is possible to divide a Bezier curve into a plurality of Bezier 
curves. This division can be done by only easy geometric calculation if it 
follows a specific rule. In other words, a Bezier curve can be recursively 
defined as an assembly of Bezier curves. 
In FIGS. 4A and 4B, characteristic (3) of a Bezier curve is depicted. In 
FIG. 4A, the division of a cubic Bezier curve is represented. With PA as a 
middle point of P0 and P1, PB as a middle point of P1 and P2, PC as a 
middle point of P2 and P3, PD as a middle point of PA and PB, PE as a 
middle point of PB and PC, and PF as a middle point of PD and PE, a cubic 
Bezier curve that is defined by four points P0, P1, P2, and P3 can be 
divided into a cubic Bezier curve that has P1 and PF as its end points and 
PA and PD as its intermediate points, and a cubic Bezier curve that has PF 
and P3 as end points and PE and PC as intermediate points. In FIG. 4B, the 
division of a quadratic Bezier curve is represented. With QD as a middle 
point of QA and QB, QE as a middle point of QB and QC, and QF as a middle 
point of QD and QE, a quadratic Bezier curve that is defined by three 
points QA, QB, and QC can be divided into a quadratic Bezier curve, which 
has QA and QF as its end points and QD as its intermediate point, and a 
quadratic Bezier curve, which has QF and QC as its end points and QE as an 
intermediate point. 
A cubic Bezier curve that is equivalent to a quadratic Bezier curve will be 
discussed. A quadratic Bezier curve can be represented by the expression 
in FIG. 3C, as is described above. When this expression is developed into 
a polynomial expression of t, the locus of a quadratic Bezier curve B is 
represented as: 
EQU B=(QA-2QB+QC)t.sup.2 +2(QB-QC)t+QC. 
A cubic Bezier curve A can be represented by the expression in FIG. 2, as 
is described above. When this expression is developed into a polynomial 
expression of t, 
EQU A=(P0-3P1+3P2-P3)t.sup.3 +3(P1-2P2+P3)t.sup.2 +3(P2-P3)t+P3. 
When the expression for curve A is compared with the expression for curve 
B, 
EQU P0-3P1+3P2-P3=0 
EQU 3(P1-2P2+P3)=QA-2QB+QC 
EQU 3(P2-P3)=2(QB-QC) 
EQU P3=QC. 
Therefore, 
EQU P0=QA 
EQU P1=(QC+2QB)/3 
EQU P2=(QA+2QB)/3 
EQU P3=QC 
More specifically, both end points correspond to each other. Point P1 
divides internally a line segment from QC to QB at a ratio of 2:1, and 
point P2 divides internally a line segment from QA to QB at a ratio of 
2:1. When an intersection of lines P0P1 and P2P3 is P.alpha., and when 
P.alpha.P1:P1P0=1:2 and P.alpha.P2:P2P3=1:2, a cubic Bezier curve that is 
defined by P0, P1, P2, and P3 can be replaced with a quadratic Bezier 
curve. The shape that meets this requirement is a trapezium in the ratio 
of P1P2:P0P3=1:3. . . . &lt;requirement 1&gt; 
Next, the approximation of a curve will be considered. In FIG. 5A, a cubic 
Bezier curve is represented. Since P0P1=P2P3, a quadrilateral that is 
formed by linking control points is an isosceles trapezoid. Since PA 
through PF are already shown in FIG. 4, they are omitted here. P.beta. is 
an intersection of lines PDPE and P0P1, and P.gamma. is an intersection of 
lines PDPE and P2P3. Since a quadrilateral P0P1P2P3 is an isosceles 
trapezoid, the lines P1P2, P.beta.P.gamma., and P0P3 are parallel. As PD 
is a middle point of PA and PB and P1PB and P.beta.PD are parallel to each 
other, P.beta. is a middle point of PA and P1. As PA is a middle point of 
P0 and P1, P.beta. internally divides line segment P0P1 at a ratio of 3:1. 
Likewise, P.gamma. divides internally line segment P3P2 at a ratio of 3:1. 
PF is a middle point of line segment P.beta.P.gamma.. 
More specifically, in a cubic Bezier curve, a tangent at point P0 is line 
P0P1, a tangent at point P3 is line P3P2, and a tangent at point PF, which 
is a middle point of line segment PDPE, i.e., a middle point of 
P.beta.P.gamma., according to the division rule of a cubic Bezier curve, 
is line P.beta.P.gamma.. 
When P.beta. and P.gamma. serve as intermediate points of a quadratic B 
spline curve, and P0 and P3 serve as end points of a quadratic B spline 
curve, line P0P1 is a tangent at P0 of a quadratic B spline curve, P3P2 is 
a tangent at P3, and P.beta.P.gamma. is a tangent at PF, which is a middle 
point of line segment P.beta.P.gamma. according to the division rule of a 
quadratic B spline curve. 
As a result, a cubic Bezier curve and a quadratic B spline curve correspond 
to a highly accurate degree in the vicinities of P0, PF, and P3. . . . 
&lt;solution 1&gt; 
A distance between points P0 and PF in a curve will be considered. As is 
shown in FIG. 5B, a cubic Bezier curve is divided again. A middle point of 
P0 and PA is Pa, a middle point of PA and PD is Pb, a middle point of PD 
and PF is Pc, a middle point of Pa and Pb is Pd, a middle point of Pb and 
Pc is Pe, and a middle point of Pd and Pe is Pf. Further, re-division of a 
quadratic Bezier curve is also performed. A middle point of P0 and P.beta. 
is P.delta., a middle point of P.beta. and PF is P.epsilon., and a middle 
point of P.delta. and P.epsilon. is P.zeta.. When a straight line is drawn 
from PA in parallel to P1PB and its intersection of line PBPF is PX, PF is 
a middle point of PBPX. That is, P1PB and P.beta.PD are parallel to each 
other, and PDPF and PAPX are also parallel. Therefore, triangle 
PAP.beta.PD is similar to triangle PAP1PB at a ratio of 1:2, while 
triangle PBPDPF is similar to triangle PBPAPX at a ratio of 1:2. Thus, 
P.beta.PD:PDPF=P1PB:PAPX=P1P2:PAPC=P1P2:(P1P2+P0P3)/2. When 
P.beta.PD:PDPF=1:2, PDP.epsilon.:P.epsilon.PF=1:3. PAP.delta.:P.delta.P0 
is always 1:3. As a result, when P.beta.PD:PDPF=P1P2:(P1P2+P0P3)/2=1:2, 
i.e., when P1P2:P0P3=1:3, Pf matches P.zeta.. An isosceles trapezoid with 
a ratio of P1P2:P0P3=1:3 is nothing but the previously described cubic 
Bezier curve with a ratio of P.alpha.P1:P1P0=1:2 and P.alpha.P2:P2P3=1:2. 
With even further division, a cubic Bezier curve fully corresponds to a 
quadratic Bezier curve. 
As for a quadrilateral that is not an isosceles trapezoid, it has been so 
described that, if it is a trapezoid in consonance with requirement 1 and 
P1P2:P0P3=1:3, a quadratic Bezier curve, which mathematically corresponds 
to a cubic Bezier curve, can be acquired. As is apparent from the 
properties of curves, when the ratio is smaller than 1:3, a quadratic 
Bezier curve is positioned outside a cubic Bezier curve. When the ratio is 
greater than 1:3, a quadratic Bezier curve is positioned inside a cubic 
Bezier curve. 
It is also apparent that, the nearer a trapezium is to being a trapezoid, 
the easier it is for the quadrilateral to possess the above described 
property. In the case of a quadrilateral that is close to being a 
trapezoid, from the above observations, a proper position for an 
intermediate point of a quadratic curve should be considered. Taking into 
account the matching of curves in the vicinities of P0, P3, and PF, as is 
described in solution 1, an intermediate point that is adjacent to P0 of a 
quadratic B spline curve must be positioned along line P0P1. An 
intermediate point that is adjacent to P3 must be positioned along line 
P2P3. This is apparent from the property in characteristic (3) of a Bezier 
curve. Further, to match the curves in the vicinity of PF, an intermediate 
point must be located along line PDPE. Therefore, when lines P0P1 and PDPE 
intersect each other near a point that divides line segment P0P1 at a 
ratio of 3:1, and likewise, lines P2P3 and PDPE intersect near the point 
that divides line segment P3P2 at a ratio of 3:1, the curves in the 
vicinities of P0, P3, and PF match each other fairly accurately as in the 
case of the isosceles trapezoid. . . . &lt;requirement 2&gt; 
Next, the case where an angle formed by lines P0P1 and P2P3 is close to 180 
degrees will be considered. In this case, either a cubic Bezier curve, or 
a quadratic Bezier curve, is almost straight, and in fact, there is only a 
slight evident difference between the two curves. . . . &lt;requirement 3&gt; 
In addition, as is described in characteristic (3) of a Bezier curve, a 
Bezier curve can be divided. It is easily understood from characteristic 
(2) of a Bezier curve that by dividing the curve an angle approaching 180 
degrees will be obtained. Therefore, when a cubic Bezier curve is divided, 
a quadratic Bezier curve or a quadratic B spline curve, which approximates 
the cubic curve, can be acquired. . . . &lt;requirement 4&gt; 
From requirements 2, 3 and 4, the following statements can be made. 
(A) When a cubic Bezier curve is to be approximated by a quadratic B spline 
curve, place an intermediate point of the quadratic B spline curve at an 
intersection of lines P0P1 and PDPE and at an intersection of lines P2P3 
and PDPE. 
(B) When an intersection can not be acquired in (A), or when a cubic Bezier 
curve differs greatly from a quadratic B spline curve, a cubic Bezier 
curve is divided and the process described in of (A) is performed. 
(C) When a quadratic B spline curve has approached a cubic Bezier curve to 
a required degree of accuracy, the division is terminated. 
Considering the case where a curve is represented on a display, as long as 
the difference in the loci of the two curves is smaller than a single 
pixel of a display, even though the curves do not match exactly from the 
mathematical view, no problem will occur. Actually, a degree of accuracy 
that is so high that it is defined by a single pixel is not required in 
many cases, and even a rough approximation does not really cause trouble. 
In fact, there are many systems that can obtain the required accuracy by 
performing the division once or twice. 
With the above described presumption, a flowchart for converting a curve is 
shown in FIG. 6. A program for this flowchart is stored in the ROM 3, and 
the CPU 2 executes the process. The CPU 2 uses the RAM 43 as a temporary 
storage area, which is required for the operation of the program. 
At step S101, four points that are to be converted are input from the input 
device 1 to an input buffer, which exists as a temporary storage area in 
the RAM 4. The input order for these four points is the coordinates for 
the first end point, the coordinates for an intermediate point that is 
adjacent to the first end point, the coordinates for the next intermediate 
point, and the coordinates for the second end point. A curve that is 
defined by a set of the four points, i.e., by the end point, the first 
intermediate point, the second intermediate point, and the end point, is 
processed. At step S102, a check is performed to determine whether or not 
the process for all the curves has been completed. If the process has been 
completed, program control advances to step S103. If the process has not 
yet been completed, program control moves to step S104. At step S103, the 
coordinate train of a quadratic B spline curve that is acquired by 
conversion is extracted from an output buffer, and is output to the output 
device 5. The process is thereafter terminated. At step S104, data for a 
curve is extracted from the input buffer. At step S105, an intermediate 
point for a quadratic B spline curve is calculated by employing the 
coordinates of the four points that define the curve. The calculation of 
the intermediate point is as described in (A). At step S106, a check is 
performed to determine whether or not the coordinates of the intermediate 
point of the B spline curve exists in the vicinity of a point that 
internally divides a line segment that links both end points and the 
intermediate points adjacent to the end points at a ratio of 3:1. When the 
coordinates of the intermediate points are present, program control moves 
to step S107. When the coordinates of the intermediate points are not 
present, program control goes to step S108. The requirement that it be 
determined concerning whether the point is present in the vicinity can 
also be satisfied by a user entry that is in consonance with the accuracy 
and the size of a curve to be converted. In this embodiment, a distance of 
.+-.10% or less of the lengths of the individual line segments is regarded 
as being within the vicinity. At step S107, a check is performed to 
determine whether or not a length ratio R of a line segment that runs 
across two intermediate points to a line segment that runs across both end 
points is close to 1:3. If the ratio R is close to 1:3, program control 
moves to step S109. If the ratio R is not close to 1:3, program control 
advances to step S108. The requirement that it be determined concerning 
whether the ratio R is close to 1:3 can also be satisfied by a user entry 
that is in consonance with the accuracy and the size of a curve to be 
converted. In this embodiment, if the ratio R is 1:2.5 to 1:3.5 (it may 
vary in consonance with the required accuracy), it is regarded as being 
close to 1:3. At step S108, a check is performed to determine whether or 
not an angle .theta., which is formed by a line that links the first end 
point and its adjacent intermediate point and a line that links the second 
end point and its adjacent intermediate point, is equal to or greater than 
140 degrees. When the angle .theta. is equal to or greater than 140 
degrees, program control advances to step S109. When the angle .theta. is 
smaller than 140 degrees, program control advances to step S110. The angle 
can be set also by a user in consonance with the accuracy and the size of 
a curve. Among the determination processes at steps S106, S107, and S108, 
it is possible to selectively perform either one or two, or all the 
processes. At step S109, the first end point, the acquired intermediate 
point of a quadratic B spline curve that is adjacent to the first end 
point, the acquired intermediate point of a quadratic B spline curve that 
is adjacent to the second end point, and the second end point are stored 
in the output buffer in the named order. The output buffer serves as a 
temporary storage area in the RAM 4. If there is a previously processed 
curve remaining, the first end point in this process and the previously 
acquired second end point of the curve are overlapped, and one of them is 
deleted. At step S110, it is assumed that a cubic Bezier curve does not 
match a quadratic B spline curve, and the cubic Bezier curve is divided 
into two. At step S111, the curve before the division was performed is 
deleted from the input buffer. While the order of the curves is 
maintained, the coordinates for the two curves are inserted at a 
predetermined location in the input buffer. 
As is described above, in the apparatus that converts a cubic Bezier curve 
into a quadratic B spline curve, the coordinate values of a quadratic B 
spline curve are calculated by employing the coordinates of the control 
points of a cubic Bezier curve, so that the conversion of a curve can be 
performed at high speed and at an optional accuracy. 
Embodiment 2! 
FIG. 7 is a flowchart for operation procedures of the present invention. 
These procedures are performed by an apparatus arranged as is shown in 
FIG. 1 in Embodiment 1. 
In FIG. 7, at step S201, the input of the required number of coordinate 
points is performed. At step S202, the coordinates for a first end point 
of a cubic B spline curve, the succeeding one or more intermediate points, 
and the second end point, which is the last, are input in the named order. 
At step S203, the point row of the cubic B spline curve is divided into a 
plurality of a cubic Bezier curves, which are then stored in the input 
buffer. A method for calculating a cubic Bezier curve from the point row 
of a cubic B spline curve will be described later. At step S204, a check 
is performed to determine whether or not all the curves have been 
processed. If all the curves have been processed, program control moves to 
step S212. If all the curves have not yet been processed, program control 
moves to step S205. At step S205, one curve is extracted. A single curve 
is defined by the set of four points, as in the first embodiment: the 
first end point, an intermediate point adjacent to the first end point, an 
intermediate point adjacent to the second end point, and the second end 
point. At step S206, as well as at step S105 in the above embodiment, the 
intermediate points of a quadratic B spline curve are calculated. At step 
S207, a difference between the acquired quadratic B spline curve and a 
cubic Bezier curve is calculated. The calculation of the difference is not 
required to be performed for all curves. Sampling may be performed on 
several to several tens of points on the quadratic B spline curve, so that 
a difference from a cubic Bezier curve at each of these points is 
calculated. In this embodiment, a quadratic B spline curve is divided into 
quadratic Bezier curves, and 16 end points, when the quadratic Bezier 
curves are recursively divided, are calculated. The calculation of a 
difference is performed by comparing these points with a cubic Bezier 
curve. At step S208, a check is performed to determine whether a 
difference at each point for which sampling was performed is equal to or 
less than one dot. If the difference is one dot or less, program control 
moves to step S209. If the difference is greater than one dot, program 
control goes to step S210. Although the determination is made by whether 
the difference is one dot or less, this value can be changed in consonance 
with the required accuracy. Further, instead of the determination of a 
difference, the method explained at steps S106, S107, and S108 in FIG. 6 
may be employed. At step S209, the acquired points of the quadratic B 
spline curve are stored in the output buffer. The storage order is the 
first end point, the intermediate point of the quadratic B spline curve 
that is adjacent to the first end point, the intermediate point of the 
quadratic B spline curve that is adjacent to the second end point, and the 
second end point. At step S210, a cubic Bezier curve is divided. At step 
S211, the curve before the division is performed is deleted from the input 
buffer, the coordinates of the two curves are inserted into the input 
buffer at predetermined positions, while the order of the curves is 
maintained. When, at step S212, a user selects the deletion of the end 
points, the program control advances to step S214 in accordance with a 
selection command. When a user does not select the deletion, program 
control moves to step S214, as in Embodiment 1. At step S214, a search is 
performed in the output buffer for a portion that consists of a 
combination of an intermediate point, an end point, and an intermediate 
point of a quadratic B spline curve. At step S215, a check is performed to 
determine whether or not all such combinations have been processed. When 
all the combinations have been processed, program control goes to step 
S213. When all the combinations have not yet been processed, program 
control advances to step S216. At step S213, the contents of the output 
buffer are output to the output device 5 and the process is thereafter 
terminated. At step S216, a check is performed to determine whether or not 
the coordinates of the end point are adjacent to the middle point of the 
two intermediate points. If the end point is adjacent to the middle point, 
program control advances to step S217. If the end point is not so 
adjacent, program control returns to step S212 where the process for the 
next point row is begun. The requirements for determining when the end 
point is regarded as being adjacent to the middle point can be varied in 
consonance with the required accuracy and the size of a curve to be 
converted. In this embodiment, when the end point is located .+-.10% or 
less of a distance between two intermediate points in the direction that 
is parallel to the line that links the two intermediate lines, and is 
located .+-.1 dot or less in the direction that is perpendicular to the 
line that links the two intermediate points, the end point is regarded as 
being adjacent. At step S217, the end point that is to be processed is 
deleted from the output buffer, and program control returns to step S212 
to perform the process for the next point row. 
The conversion of a cubic B spline curve into a cubic Bezier curve is 
performed by the expression below. 
It should be noted that this conversion method is well known and described 
in "Shape processing technology by a computer display 11!", by Fujio 
Yamaguchi, published by Nikkan Industry Newspaper Co., Ltd. 
The program lists for performing this conversion method are shown in FIGS. 
10 through 16. The entry bzr denotes a cubic Bezier curve to be output, 
the entry coord denotes a cubic B spline curve before conversion, the 
entry return denotes the return of the number of control points for a 
Bezier curve. The entry nop denotes the number of control points of a 
cubic B spline curve. C language is used for the description. 
As is described above, in the apparatus that converts a cubic B spline 
curve into a quadratic B spline curve, the coordinates of the control 
points of the cubic B spline curve are employed to calculate the 
coordinate values of a quadratic B spline curve, so that the conversion of 
a curve can be efficiently performed at high speed and at an optional 
accuracy. 
Embodiment 3! 
FIG. 8 is a diagram illustrating an apparatus that converts outline font 
data, which consist of a cubic B spline curve and a straight line, and 
outline font data, which consists of a quadratic B spline curve and a 
straight line. A keyboard 10 is employed to edit a produced font; a CRT 
11, a display device, displays an original font and the produced font; a 
CPU 12 performs calculations and provides control; a ROM 13 is employed to 
store font data and programs for control procedures and calculation 
procedures; and a RAM 14 is employed as a temporary storage area for 
calculation or control work. Reference number 15 denotes a floppy disk 
drive, and 16, a printer that provides a print output. The individual 
devices communicate with each other via a controller IC and a driver IC. 
FIG. 9 is a flowchart showing the operation of the present invention. At 
step S301, font data is read from the ROM 13. At step S302, a check is 
performed to determine whether or not all the character data have been 
processed. When all the data have been processed, the program is 
terminated. At step S303, the straight line portion is retained in the 
same state, while a cubic B spline curve is converted into a quadratic B 
spline curve, and character data are re-made into character data that 
consist of quadratic B spline curves and straight lines. Since the method 
for converting a cubic B spline curve into quadratic B spline curves has 
previously been described, an explanation for it will not be given here. 
At step S304, the acquired character data are stored on the floppy disk 
15. Program control returns to step S301 to perform the processing for the 
next character data. 
As is described above, the outline font data that consist of cubic B spline 
curves and straight lines are converted into outline font data that 
consist of quadratic B spline curves and straight lines, so that 
conversion into various font format is available, and format conversion of 
font data can be easily and exactly performed. The character data that are 
stored on the floppy disk are printed or displayed by storing the data in 
the ROM of a printer or a display device, or by down-loading the data to 
the RAM of the printer or the display device. 
As is described above, since a quadratic curve is generated directly by 
employing the coordinates of the control points of a cubic curve, such as 
a cubic Bezier curve or a cubic B spline curve, the following effects are 
obtained: 
1. Since no human effort is required, it is possible to convert the data 
for a curve at a low cost. 
2. Since mathematical conversion is performed, accuracy can be maintained. 
3. An approximate accuracy can be easily changed to confirm the accuracy 
required. 
4. The process can be performed for various things that are represented by 
curves, such as figures and characters.