IP Library Granted Patent US 7,362,898
Granted Patent B2
US 7,362,898 · App. 11/828,588 · Granted Apr 22, 2008

Scalable stroke font system and method

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,362,898
App. No.
11/828,588
Granted
Apr 22, 2008
Kind
B2
Abstract

A method of creating font format data from source font data includes analyzing the source font data to obtain glyph data for a plurality of glyphs, dissecting the glyph data, extracting midline data from the dissected glyph data, classifying the midline data as unique element data and common element data, associating unique element data and common element data to each glyph of the plurality of glyphs.

Claims (109)

1. A system for creating font format data from source font data, comprising:

a glyph analysis software module stored in a computer readable medium and comprising computer executable instructions that are operable to cause a computing device to analyze the source font data and obtain glyph data for a plurality of glyphs from the source font data;

a glyph dissection software module stored in a computer readable medium and comprising computer executable instructions that are operable to cause a computing device to dissect the glyph data for each glyph into stroke data;

a midline extraction software module stored in a computer readable medium and comprising computer executable instructions that are operable to cause a computing device to extract midline data from the stroke data; and

an element analysis software module stored in a computer readable medium and comprising computer executable instructions that are operable to cause a computing device to classify the midline data as unique element data and common element data and associate the unique element data and the common element data to each glyph of the plurality of glyphs.

2. The system of claim 1 , wherein the glyph analysis software module computer executable instructions comprise:

contour analysis software instructions that are operable to cause a computing device to sort the glyph data into inner and outer contour data; and

containment analysis software instructions that are operable to cause a computing device to determine containment of the inner and outer contour data.

3. The system of claim 1 , wherein the glyph analysis software module computer executable instructions further comprise glyph simplification software instructions that are operable to cause a computing device to generate reduced glyph data from the glyph data.

4. The system of claim 3 , wherein the glyph simplification software instructions that are operable to cause a computing device to generate reduced glyph data from the glyph data comprise:

cluster removal software instructions that are operable to cause a computing device to reduce data clusters in the glyph data;

Bezier arc reduction software instructions that are operable to cause a computing device to reduce Bezier arc data in the glyph data; and

polygon simplification software instructions that are operable to cause a computing device to reduce polygon definition data in the glyph data.

5. The system of claim 3 , wherein the glyph analysis software module computer executable instructions further comprises contour point analysis software instructions that are operable to cause a computing device to classify the glyph data according to at least one contour characteristic.

6. The system of claim 5 , wherein the at least one contour characteristic comprises convex and reflex angle characteristics.

7. The system of claim 5 , wherein the at least one contour characteristic comprises valid neighbor characteristics.

8. The system of claim 1 , wherein the glyph dissection software module computer executable instructions comprise instructions that are operable to cause a computing device to:

select starting stroke data from the glyph data;

increment through the glyph data from the starting stroke data;

determine if the incremented glyph data is candidate data; and

if the incremented glyph data is candidate data, then select the next increment through the glyph data according to vector of movement data.

9. The system of claim 8 , wherein the glyph dissection software module computer executable instructions further comprise instructions that are operable to cause a computing device to:

store the increment through the glyph data according to the vector of movement data as event data; and

select event data as starting stroke data for subsequent dissection of glyph data into stroke data.

10. The system of claim 8 , wherein the instructions that are operable to cause a computing device to select the next increment through the glyph data according to vector of movement data comprises instructions that are operable to cause a computing device to compare a proposed increment in the glyph data to a flatness threshold and determine whether the proposed increment in the glyph data is valid based on the comparison.

11. The system of claim 8 , wherein the instructions that are operable to cause a computing device to select starting stroke data from the glyph data comprise instructions that are operable to cause a computing device to:

identify starting stroke data from the font source data;

identify starting stroke data according to starting threshold data; and

prioritize the identified starting stroke data and select the highest priority identified starting stroke data.

12. The system of claim 8 , wherein the glyph dissection software module computer executable instructions further comprise instructions that are operable to cause a computing device to merge stroke data for each glyph after dissection of the glyph data.

13. The system of claim 12 , wherein the instructions that are operable to cause a computing device to merge stroke data for each glyph after dissection of the glyph data comprise instructions that are operable to cause the computing device to:

identify explicitly connected stroke data;

identify implicitly connected stroke data;

merge the explicitly connected stroke data; and

merge the implicitly connected stroke data.

14. The system of claim 1 , wherein the midline extraction software module executable instructions comprise instructions that are operable to cause a computing device to:

increment through the stroke data;

for each increment, determine and store a midline data value; and

define the midline data as the stored midline data values after incrementing through the stroke data.

15. The system of claim 14 , wherein the instructions that are operable to cause a computing device to determine and store a midline data value comprise instructions that are operable to cause a computing device to:

define segment data based on the incremented stroke data;

define a midpoint based on the segment data; and

define the midline data value as a midpoint.

16. The system of claim 1 , wherein the element analysis software module computer executable instructions comprise instructions that are operable to cause a computing device to:

identify midline data defining a common pattern;

identify midline data defining a unique pattern;

classify each identified midline data defining a common pattern according to a common element identifier; and

classify each identified midline data defining a unique pattern according to a unique element identifier.

17. The system of claim 16 , wherein the element analysis software module computer executable instructions farther comprise instructions that are operable to cause a computing device to:

store the common element identifier and corresponding translation data in a glyph data structure;

store the unique element data in the data structure; and

store the common element identifier and the common element data in a common element database;

wherein the corresponding common element data as translated by the translation data and the unique element data define a polygon skeleton of a glyph shape.

18. A method of creating font format data from source font data, comprising:

analyzing the source font data to obtain glyph data for a plurality of glyphs;

dissecting the glyph data;

extracting midline data from the dissected glyph data;

classifying the midline data as unique element data and common element data; and

associating the unique element data and the common element data to each glyph of the plurality of glyphs.

19. The method of claim 18 , wherein analyzing the source font data to obtain glyph data for a plurality of glyphs comprises:

sorting the glyph data into inner and outer contour data; and

determining containment of the inner and outer contour data.

20. The method of claim 19 , wherein analyzing the source font data to obtain glyph data for a plurality of glyphs further comprises generating reduced glyph data from the glyph data.

21. The method of claim 19 , wherein analyzing the source font data to obtain glyph data for a plurality of glyphs comprises classifying the glyph data according to at least one contour characteristic.

22. The method of claim 21 , wherein the at least one contour characteristic comprises valid neighbor characteristics.

23. The method of claim 18 , wherein dissecting the glyph data comprises:

selecting starting stroke data from the glyph data;

incrementing through the glyph data from the starting stroke data;

determining if the incremented glyph data is candidate data; and

if the incremented glyph data is candidate data, then selecting the next increment through the glyph data according to vector of movement data.

24. The method of claim 23 , wherein dissecting the glyph data further comprises:

storing the increments through the glyph data according to the vector of movement data as event data; and

selecting event data as starting stroke data for subsequent dissection of glyph data into stroke data.

25. The method of claim 23 , wherein selecting the next increment through the glyph data according to vector of movement data comprises:

comparing a proposed increment in the glyph data to a flatness threshold; and

determining whether the proposed increment in the glyph data is valid based on the comparison.

26. The method of claim 23 , wherein selecting starting stroke data from the glyph data comprises:

identifying starting stroke data from the font source data;

identifying starting stroke data according to starting threshold data; and

prioritizing the identified starting stroke data; and

selecting the highest priority identified starting stroke data.

27. The method of claim 23 , wherein dissecting the glyph data further comprises merging stroke data for each glyph after dissection of the glyph data.

28. The method of claim 27 , wherein merging stroke data for each glyph after dissection of the glyph data comprises:

identifying explicitly connected stroke data;

identifying implicitly connected stroke data;

merging the explicitly connected stroke data; and

merging the implicitly connected stroke data.

29. The method of claim 28 , wherein extracting midline data from the dissected glyph data comprises:

incrementing through the stroke data;

for each increment, determining and storing a midline data value; and

defining the midline data as the stored midline data values after incrementing through the stroke data.

30. The method of claim 18 , wherein classifying the midline data as unique element data and common element data comprises:

identifying midline data defining a common pattern;

identifying midline data defining a unique pattern;

for each identified midline data defining a common pattern, classifying the identified midline data defining a common pattern according to a common element identifier; and

for each identified midline data defining a unique pattern, classifying the identified midline data defining the common pattern according to a unique element identifier.

31. A system for creating font format data from source font data, comprising:

means for analyzing the source font data to obtain glyph data for a plurality of glyphs;

means for dissecting the glyph data;

means for extracting midline data from the dissected glyph data;

means for classifying the midline data as unique element data and common element data; and

means for associating the unique element data and the common element data to each glyph of the plurality of glyphs.

32. A system for rendering text from stored font data, the system comprising:

a font data structure stored in a computer readable medium, the font data structure comprising common element data and unique element data for a plurality of glyphs:

a rendering software module stored in a computer readable medium and comprising computer executable instructions that are operable to cause a computing device to access the font data structure and display a glyph based on the common element data and the unique element data accessed; and

a mobile device comprising a computing device and a memory, the memory operable to store the font data structure and the rendering software module, and the computing device operable to execute the rendering software module computer executable instructions.

33. The system of claim 32 , wherein the font data structure comprises:

a common element database comprising a common element identifier field and a description data field, the common element identifier field operable to store common element identifier data and the description data field operable to store description data that defines a common element shape; and

at least one glyph data structure comprising at least one common element record, the at least one common element record comprising a common element identifier field and a translation field, the common element identifier field operable to store common element identifier data corresponding to a common element stored in the common element database, and the translation field operable to store translation data for use in translating the common element shape.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDED PATENT NUMBER TO REMOVE PATENT NO. 8,873,407 AT PREVIOUSLY RECORDED ON REEL 64066 FRAME 1. ASSIGNOR(S) HEREBY CONFIRMS THE NUNC PRO TUNC ASSIGNMENT EFFECTIVE DATE MARCH 20, 2023. Recorded Feb 2, 2026
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 074921/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064066/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
CHANGE OF NAME Recorded Oct 24, 2014
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 034045/0741 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2013
From: 2012244 ONTARIO INC.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 030682/0594 →