A microprocessor implemented method of recognizing handwritten, independent symbols and outputting the corresponding Latin derived alphabetic character comprising the steps of:
- (a) receiving an electronic stylus input comprising a trace path of one or more symbols selected from a first or second set of a universal computer script of a Latin derived alphabet;
- (b) sequentially timed Cartesian coordinate mapping of the trace path;
- (c) if the trace path is a dot made within 0.5 seconds from the last trace path, engaging an edit mode of the program;
- (d) if not a dot, smoothing of the trace path;
- (e) determining in which quadrant the trace path starts and assigning that start quadrant to that trace path;
- (f) assigning change points by determination of changes in x direction, y direction, and in both the x and y direction simultaneously and determining an end point of the trace path;
- (g) summing the number of direction change points start point and an end point;
- (h) if the sum is two proceeding to step (k);
- (i) if the sum is three to seven proceeding to step (w);
- (j) if the sum is greater than seven non assignment of a character and returning to step (a) with a next new stylus input;
- (k) determining the slope of the line between the start point and the end point, or the start point and the change point, or a change point and a change point or the change point and an end point;
- (l) determining if the slope of the line is greater than (shallow) or less than (sharp) an assigned first critical angle (or boundary slope);
- (m) if the slope is sharp proceeding to step (o);
- (n) if the slope is shallow, based on start quadrant determining if the trace path is short or long and generating a character and return to step (a);
- (o) if slope is sharp, based on start quadrant determining the concavity or the convexity;
- (p) determining if the trace path is long or short, and if long, generating a character and returning to step (l);
- (q) if trace path is short assigning a flat value to trace path (high or low concavity);
- (r) establishing a base three identification number or concatenating the change point name(s) (x, y, z) into an ID name;
- (s) calculating the slope of the lines between all points;
- (t) checking the trace path flatness and ID name;
- (u) if trace-path is flat, generating a character and returning to step (a);
- (v) if trace path is not flat, assigning a character and returning to step (a);
- (w) checking the trace path for flatness and assigning an ID name;
- (x) determining the slope between start point, change points and end point (the important points);
- (y) querying the number of points, the assigned ID and the start quadrant;
- (z) checking for flatness and assigning a value;
- (aa) if flat assigning a value, if not flat possible determining output value;
- (ab) if not flat but an output value is generated checking for presence of a calculate symbol and a math mode, calculating a mathematical formula to generate an output value and returning to step (a);
- (ac) if not in math mode, outputting no value and returning to step (a);
- (ad) if unable to generate character and a calculate symbol is not present, testing stroke slope against a first critical angle;
- (ae) if first critical angle is shallow, generating a character if possible and returning to step (a);
- (af) if unable to assign a character testing a second stroke slope against a second critical angle
- (ag) if first critical angle is sharp testing a second stroke slope against a second critical angle;
- (ah) if identification is possible, assigning a character and returning to step (a);
- (ai) if identification is not possible, comparing a critical point relationship, assigning a character, and returning to step (a);
- (aj) if first critical angle is shallow testing a second stroke slope against a second critical angle;
- (ak) if identification is possible, assigning a character and returning to step (a);
- (al) if identification is not possible, comparing a critical point relationship, assigning a character, and returning to step (a);
- (am) if first critical angle is sharp, generating a character if possible and returning to step (a);
- (an) if unable to assign a character testing a second stroke slope against a second critical angle;
- (ao) if first critical angle is sharp testing a second stroke slope against a second critical angle;
- (ap) if identification is possible, assigning a character and returning to step (a);
- (aq) if identification is not possible, comparing a critical point relationship, assigning a character, and returning to step (a);
- (ar) if first critical angle is shallow testing a second stroke slope against a second critical angle;
- (as) if identification is possible, assigning a character and returning to step (a);
- (at) if identification is not possible, comparing a critical point relationship, assigning a character, and returning to step (a).