AU2012268803A1 - Automatic hinting of outline fonts containing vertical and horizontal features - Google Patents

Automatic hinting of outline fonts containing vertical and horizontal features Download PDF

Info

Publication number
AU2012268803A1
AU2012268803A1 AU2012268803A AU2012268803A AU2012268803A1 AU 2012268803 A1 AU2012268803 A1 AU 2012268803A1 AU 2012268803 A AU2012268803 A AU 2012268803A AU 2012268803 A AU2012268803 A AU 2012268803A AU 2012268803 A1 AU2012268803 A1 AU 2012268803A1
Authority
AU
Australia
Prior art keywords
stem
glyph
stems
points
displacement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
AU2012268803A
Inventor
Albert Chang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU2012268803A priority Critical patent/AU2012268803A1/en
Publication of AU2012268803A1 publication Critical patent/AU2012268803A1/en
Abandoned legal-status Critical Current

Links

Abstract

- 27 AUTOMATIC HINTING OF OUTLINE FONTS CONTAINING VERTICAL AND HORIZONTAL FEATURES A method of rendering an auto-hinted glyph (400) to a pixel grid (203,1005) of a display (114). The glyph is defined by points (404-411). The method determine (301) a plurality of stems (401,402,403) in the glyph each having an orientation in a first direction (vertical, horizontal) and a first displacement (d2 or d3) of a first stem of the plurality of stems, to align the first stem with the pixel grid. The method forms (305) an edge aligned glyph by moving each of the plurality of points according to the first displacement to align the first stem with the grid, and a second displacement of a second stem to align the second stem of the edge aligned glyph with the grid. The method forms an updated glyph by moving the second stem, and a subset of the points to one side of the second stem, according to the second displacement and renders (307), on the display, the updated. 6981330_1 P053223_speci lodge Start Determine plurality of vertical stems For each stem, create and associate a set of points to the stem based on location relative to stem Select an unprocessed stem from plurality of stems No Determine minimum distance from stem edge to pixel boundary and use as displacement value Translate points associated with stem by displacement value All stems processed? Yes 307 Render and End Fig. 3

Description

- 1 AUTOMATIC HINTING OF OUTLINE FONTS CONTAINING VERTICAL AND HORIZONTAL FEATURES TECHNICAL FIELD [0001] This invention applies to the field of display fonts, and specifically to the problem of hinting of outline fonts. BACKGROUND [0002] The rendering of text to a display device may result in blurry text, for example caused by the relatively low pixel count used to represent the shape of the text, which is in turn represented by a vector definition of a text character from a font file. [0003] It is difficult to improve the visual quality of rendered text by improving the rendering algorithm. Where rendering details are defined in a resolution higher than the pixels available, improving the rendering merely minimises the rendering artefacts, and does not offer an improvement in the actual text. The result of such issues is the loss of detail within the pixels, as the pixels are not of sufficient size relative to the text size to represent the text detail accurately. [0004] Traditionally, fonts often employ hinting instructions that are embedded within a font file. The hinting instructions are specified by a human, skilled in the art of typography, and stored within the font file. The intent of the hinting instructions is to preserve details that would otherwise be lost inside the pixels, by repositioning the specific font detail in a way that can be shown during rendering. [0005] TrueType hinting instructions, which are specified by a human expert in typography, are often specified for each character in a font file and are verified and adjusted according to the target display sizes. For example, suppose a font existed which included characters from the English alphabet, which includes the alphabetical characters and numbers, then such a font would have at least sixty-two characters - 26 alphabetical characters of upper and lower cases and ten numeric characters. In order to produce hinting instructions for the font, a designer would start at a target display size, specify hinting instructions for each character, then verify 6981330_1 P053223_speci lodge -2 that the sixty-two characters are correct, and updated as necessary. All other sizes requiring hinting would also need to be visually verified. If changes are required during the verification, then a verification of all sizes would be required again to ensure the changes did not introduce errors. Suppose that the fonts need hinting from sizes 10 pt to 32 pt, then twenty-four sizes need hinting. Once the hinting process has been specified, then a total of 1,488 characters would have been hinted and verified. The effort required to manually hint a font for the English language requires substantial effort. [0006] Now consider a font for the Japanese language. For a Japanese font, there is an excess of 7,000 characters. If each target display size was to be considered, then this would be a substantial effort. For this reason, automated hinting is an important alternative to human (manually) provided hinting instructions. [0007] One method of automated hinting that is often employed is simple grid-fitting. This method makes use of the stem of a character. The stem is the main, usually vertical, stroke of a letterform, excluding any serifs. In some fonts the stem is roughly the same thickness as other parts of the character. In other fonts, the stem may be thicker, in some cases tapering to meet the other parts. Not all characters have a stem, such as Q or S. The vertical, non-curved portions of the characters L, 1, d, B, and p are examples of stems. Some characters, such as H, N, and M, have two vertical stems. The character m has three stems. The character H has a horizontal stem. When grid-fitting is employed, points on the outline of the character definition are snapped to pixel boundaries. Once the points are snapped to pixel boundaries, then the width of the stem is adjusted to a value that is a multiple of the pixel width. This ensures that the stems of the characters are of high-contrast. However, such a solution can result in stem collisions, when multiple stems are defined less than a pixel distance apart. [0008] In another form of automated hinting, font features are detected and the features are aligned to the pixel boundary positions. An example of features that may be detected may include font stems. When aligning the stems of the glyph, alignment is often performed by ensuring that the stem boundary aligns to the pixel grid to ensure a strong boundary of high contrast. However, in such prior art, the alignment of the features to the pixel boundaries is performed independently for each feature. When each stem is hinted independently, then features that are close together and separated by spacing may collapse thereby resulting in 6981330_1 P053223_speci lodge -3 collapsed stems. In this situation, the collapsed stems appear as a single stem instead of the correct independent stems. SUMMARY [0009] It is therefore desirable to improve the readability of text while minimising one or more side effects that are present in the prior art methods of automated hinting. [0010] According to one aspect of the present disclosure, there is provided a method of rendering an auto-hinted glyph to a pixel grid of a display, the glyph being defined by a plurality of points. The method comprises (a) determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; (b) determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; (c) forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; (d) determining a second displacement of a second stem of the plurality of stems to align the second stem of the edge aligned glyph with the pixel grid; (e) forming an updated glyph by moving the second stem, and a subset of the points to one side of the second stem, according to the second displacement; and (f) rendering, on the display, the updated glyph as the auto-hinted glyph. [0011] According to another aspect, provided is a computer-implemented method of rendering a glyph to a pixel grid of an output device, the glyph being defined by a plurality of points. This method comprises: (a) determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; (b) determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; (c) forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; (d) repeating steps (b) and (c) for each remaining stem oriented in the first direction to form an updated glyph using a current determined displacement such that, for each iteration, the current displacement associated with a current stem is applied to the points of the current stem, and also to a subset of the points of the glyph to one side of the current stem not including those points for which a displacement has already been determined; and (e) rendering, to the output device, the updated glyph. 6981330_1 P053223_speci lodge -4 [0012] In these methods, desirably step (a) comprises analysing points that define edges of the glyph that are within a threshold tolerance of the orientation in the first direction to determine the stems. [0013] In one implementation the stems are at least near vertically oriented. Here the stems can be processed in left-to-right order and the subset of points formed for each stem is located at a position equal to or to the right of the left-edge of stroke. Alternatively the stems may be processed in right-to-left order and the subset of points formed for each stem is located at a position equal to or to the left of the right-edge of stroke. Alternatively the stems can be processed in centre-outwards and the subset of points formed for each stem is located at a position that is towards the outwards direction of the current stem. [0014] In another implementation are at least near horizontally oriented. Here the stems may be processed in bottom-to-top order and the subset of points formed for each stem is located at a position equal to or above the bottom-edge of stroke. Alternatively the stems may be processed in top-to-bottom order and the subset of points formed for each stem is located at a position equal to or below the top-edge of stroke. In a further alternative the stems can be processed in centre-outwards order and the subset of points formed for each stem is located at a position that is towards the outwards direction of the stem. [0015] Desirably for centre-outwards processing the centre of the glyph is one of: (i) an average of the bounding box extent; (ii) an median of the points; and (iii) an average of the points. Preferably the stems are processed according to a distance from centre. [0016] In a preferred implementation, step (a) comprises determining a stem as comprising a stroke having a width of at least 2 pixels. [0017] In specific implementations, with respect to steps (a) to (e)of the first aspect, or with respect to steps (a) to (d) of the second aspect, the method may further comprise repeating the respective steps for stems having an orientation in a second direction. Here the first direction may be vertical and the second direction is horizontal, or vice versa. [0018] Other aspects are also disclosed. 6981330_1 P053223_speci lodge -5 BRIEF DESCRIPTION OF THE DRAWINGS [0019] At least one embodiment of the invention will now be described with reference to the following drawings, in which: [0020] Figs. 1A and lB collectively form a schematic block diagram representation of an electronic device upon which described arrangements can be practised; [0021] Fig. 2 is a diagram of an example glyph for processing according to the present disclosure; [0022] Fig. 3 is a flow diagram illustrating steps for processing vertical stems; [0023] Fig. 4 is a diagram showing the stems of a glyph, according to the example glyph in Fig. 3; [0024] Fig. 5 is a diagram showing the distances measured and distances of importance, for a glyph before the translations steps of the invention are applied; [0025] Fig. 6 is a diagram showing a glyph with the first translation step applied, and the effect of the distance from the first stem with the second stem; [0026] Fig. 7 is a diagram showing a first stem and the associated points that are translated relative to the first stem; [0027] Fig. 8 is a diagram showing a second stem and the associated points that are translated relative to the second stem; [0028] Fig. 9 is a diagram showing a third stem and the associated points that are translated relative to the third stem; and [0029] Fig. 10 is a diagram showing the final resultant hinted glyph after processing according to the present disclosure; [0030] Fig. 11 is a flow diagram illustrating steps for processing horizontal stems; 6981330_1 P053223_speci lodge -6 [0031] Fig. 12 is a diagram showing an example glyph with horizontal stems; [0032] Figs. 13A to 13C illustrate another approach relating to the formation of the sets of points associated with each stem where the order of stem processing is from centre and then outwards; [0033] Figs. 14A to 14C illustrate another approach for the formation of the sets of points associated with each stem where the order of stem processing is from right to left; and [0034] Fig. 15 is a flow chart of another implementation where the translation steps performed on the points occurs only once. DETAILED DESCRIPTION INCLUDING BEST MODE Context [0035] In the preferred arrangements presently described, scalable definitions are utilised for the visual representation of a character. The scalable definitions may describe the outline of the character, also known as a silhouette, whereby the region inside the outline is filled and the region outside is not filled. The scalable definition is defined within a two-dimensional coordinate space, whereby sequences of points, which are co-ordinates within the two dimensional coordinate space, are used to define the boundary of the character outline. The points defining the outline may correspond to the control points defining a Bezier curve segment, a straight line segment or may correspond to points on a spline. [0036] A scalable definition for a character is also known as a glyph. A glyph may be composed of multiple shape definitions, whereby a shape definition is a closed outline defined by a sequence of points. Typically, a font file contains multiple glyph definitions. The outline defined through two control points is called an edge. Edges may be curved or may be straight. Physical Implementation [0037] Figs. 1A and lB depict a general-purpose computer system 100, upon which various arrangements and methods for rendering an auto-hinted glyph to be described can be practiced. 6981330_1 P053223_speci lodge -7 [0038] As seen in Fig. 1A, the computer system 100 includes: a computer module 101; input devices such as a keyboard 102, a mouse pointer device 103, a scanner 126, a camera 127, and a microphone 180; and output devices including a printer 115, a display device 114 and loudspeakers 117. An external Modulator-Demodulator (Modem) transceiver device 116 may be used by the computer module 101 for communicating to and from a communications network 120 via a connection 121. The communications network 120 may be a wide-area network (WAN), such as the Internet, a cellular telecommunications network, or a private WAN. Where the connection 121 is a telephone line, the modem 116 may be a traditional "dial up" modem. Alternatively, where the connection 121 is a high capacity (e.g., cable) connection, the modem 116 may be a broadband modem. A wireless modem may also be used for wireless connection to the communications network 120. [0039] The computer module 101 typically includes at least one processor unit 105, and a memory unit 106. For example, the memory unit 106 may have semiconductor random access memory (RAM) and semiconductor read only memory (ROM). The computer module 101 also includes an number of input/output (1/0) interfaces including: an audio-video interface 107 that couples to the video display 114, loudspeakers 117 and microphone 180; an 1/0 interface 113 that couples to the keyboard 102, mouse 103, scanner 126, camera 127 and optionally a joystick or other human interface device (not illustrated); and an interface 108 for the external modem 116 and printer 115. In some implementations, the modem 116 may be incorporated within the computer module 101, for example within the interface 108. The computer module 101 also has a local network interface 111, which permits coupling of the computer system 100 via a connection 123 to a local-area communications network 122, known as a Local Area Network (LAN). As illustrated in Fig. 1A, the local communications network 122 may also couple to the wide network 120 via a connection 124, which would typically include a so called "firewall" device or device of similar functionality. The local network interface 111 may comprise an EthernetTM circuit card, a BluetoothTM wireless arrangement or an IEEE 802.11 wireless arrangement; however, numerous other types of interfaces may be practiced for the interface 111. [0040] The 1/0 interfaces 108 and 113 may afford either or both of serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 109 are provided and typically include a hard disk drive (HDD) 110. Other storage 6981330_1 P053223_speci lodge -8 devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 112 is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (e.g., CD-ROM, DVD, Blu-ray Disc TM), USB-RAM, portable, external hard drives, and floppy disks, for example, may be used as appropriate sources of data to the system 100. [0041] The components 105 to 113 of the computer module 101 typically communicate via an interconnected bus 104 and in a manner that results in a conventional mode of operation of the computer system 100 known to those in the relevant art. For example, the processor 105 is coupled to the system bus 104 using a connection 118. Likewise, the memory 106 and optical disk drive 112 are coupled to the system bus 104 by connections 119. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun TM Sparcstations, Apple Mac or a like computer systems. [0042] The methods of rendering an auto-hinted glyph may be implemented using the computer system 100 wherein the processes of Figs. 2 to 15, to be described, may be implemented as one or more software application programs 133 executable within the computer system 100. In particular, the steps of the methods for rendering an auto-hinted glyph are effected by instructions 131 (see Fig. IB) in the software 133 that are carried out within the computer system 100. The software instructions 131 may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the rendering methods and a second part and the corresponding code modules manage a user interface between the first part and the user. [0043] The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer system 100 from the computer readable medium, and then executed by the computer system 100. A computer readable medium having such software or computer program recorded on the computer readable medium is a computer program product. The use of the computer program product in the computer system 100 preferably effects an advantageous apparatus for rendering an auto-hinted glyph. 6981330_1 P053223_speci lodge -9 [0044] The software 133 is typically stored in the HDD 110 or the memory 106. The software is loaded into the computer system 100 from a computer readable medium, and executed by the computer system 100. Thus, for example, the software 133 may be stored on an optically readable disk storage medium (e.g., CD-ROM) 125 that is read by the optical disk drive 112. A computer readable medium having such software or computer program recorded on it is a computer program product. The use of the computer program product in the computer system 100 preferably effects an apparatus for rendering an auto-hinted glyph. [0045] In some instances, the application programs 133 may be supplied to the user encoded on one or more CD-ROMs 125 and read via the corresponding drive 112, or alternatively may be read by the user from the networks 120 or 122. Still further, the software can also be loaded into the computer system 100 from other computer readable media. Computer readable storage media refers to any non-transitory tangible storage medium that provides recorded instructions and/or data to the computer system 100 for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, DVD, Blu-ray TM Disc, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 101. Examples of transitory or non-tangible computer readable transmission media that may also participate in the provision of software, application programs, instructions and/or data to the computer module 101 include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. [0046] The second part of the application programs 133 and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display 114. Through manipulation of typically the keyboard 102 and the mouse 103, a user of the computer system 100 and the application may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 117 and user voice commands input via the microphone 180. 6981330_1 P053223_speci lodge - 10 [0047] Fig. lB is a detailed schematic block diagram of the processor 105 and a "memory" 134. The memory 134 represents a logical aggregation of all the memory modules (including the HDD 109 and semiconductor memory 106) that can be accessed by the computer module 101 in Fig. 1A. [0048] When the computer module 101 is initially powered up, a power-on self-test (POST) program 150 executes. The POST program 150 is typically stored in a ROM 149 of the semiconductor memory 106 of Fig. 1A. A hardware device such as the ROM 149 storing software is sometimes referred to as firmware. The POST program 150 examines hardware within the computer module 101 to ensure proper functioning and typically checks the processor 105, the memory 134 (109, 106), and a basic input-output systems software (BIOS) module 151, also typically stored in the ROM 149, for correct operation. Once the POST program 150 has run successfully, the BIOS 151 activates the hard disk drive 110 of Fig. 1A. Activation of the hard disk drive 110 causes a bootstrap loader program 152 that is resident on the hard disk drive 110 to execute via the processor 105. This loads an operating system 153 into the RAM memory 106, upon which the operating system 153 commences operation. The operating system 153 is a system level application, executable by the processor 105, to fulfil various high level functions, including processor management, memory management, device management, storage management, software application interface, and generic user interface. [0049] The operating system 153 manages the memory 134 (109, 106) to ensure that each process or application running on the computer module 101 has sufficient memory in which to execute without colliding with memory allocated to another process. Furthermore, the different types of memory available in the system 100 of Fig. 1A must be used properly so that each process can run effectively. Accordingly, the aggregated memory 134 is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by the computer system 100 and how such is used. [0050] As shown in Fig. IB, the processor 105 includes a number of functional modules including a control unit 139, an arithmetic logic unit (ALU) 140, and a local or internal memory 148, sometimes called a cache memory. The cache memory 148 typically include a number of storage registers 144 - 146 in a register section. One or more internal busses 141 functionally interconnect these functional modules. The processor 105 typically also has one or 6981330_1 P053223_speci lodge - 11 more interfaces 142 for communicating with external devices via the system bus 104, using a connection 118. The memory 134 is coupled to the bus 104 using a connection 119. [0051] The application program 133 includes a sequence of instructions 131 that may include conditional branch and loop instructions. The program 133 may also include data 132 which is used in execution of the program 133. The instructions 131 and the data 132 are stored in memory locations 128, 129, 130 and 135, 136, 137, respectively. Depending upon the relative size of the instructions 131 and the memory locations 128-130, a particular instruction may be stored in a single memory location as depicted by the instruction shown in the memory location 130. Alternately, an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations 128 and 129. [0052] In general, the processor 105 is given a set of instructions which are executed therein. The processor 105 waits for a subsequent input, to which the processor 105 reacts to by executing another set of instructions. Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices 102, 103, data received from an external source across one of the networks 120, 102, data retrieved from one of the storage devices 106, 109 or data retrieved from a storage medium 125 inserted into the corresponding reader 112, all depicted in Fig. 1A. The execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory 134. [0053] The disclosed rendering arrangements use input variables 154, which are stored in the memory 134 in corresponding memory locations 155, 156, 157. The rendering arrangements produce output variables 161, which are stored in the memory 134 in corresponding memory locations 162, 163, 164. Intermediate variables 158 may be stored in memory locations 159, 160, 166 and 167. [0054] Referring to the processor 105 of Fig. iB, the registers 144, 145, 146, the arithmetic logic unit (ALU) 140, and the control unit 139 work together to perform sequences of micro operations needed to perform "fetch, decode, and execute" cycles for every instruction in the instruction set making up the program 133. Each fetch, decode, and execute cycle comprises: 6981330_1 P053223_speci lodge - 12 (i) a fetch operation, which fetches or reads an instruction 131 from a memory location 128, 129, 130; (ii) a decode operation in which the control unit 139 determines which instruction has been fetched; and (iii) an execute operation in which the control unit 139 and/or the ALU 140 execute the instruction. [0055] Thereafter, a further fetch, decode, and execute cycle for the next instruction may be executed. Similarly, a store cycle may be performed by which the control unit 139 stores or writes a value to a memory location 132. [0056] Each step or sub-process in the processes of Figs. 2 to 15 is associated with one or more segments of the program 133 and is performed by the register section 144, 145, 147, the ALU 140, and the control unit 139 in the processor 105 working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 133. Glyph Definition [0057] With reference to Fig. 2, details of the scalable definition for a glyph will be illustrated with reference to an example glyph 200. Shape definitions for the glyph are described by a sequence of points 201, which define the control points forming a closed outline 202. The control points of the closed outline definition corresponds to positions relative to a two dimensional pixel grid 203. When the pixel grid 203 corresponds to the pixel on the target display, such as the display device 114 or printer 115, then this is called a display or reproduction grid. From the shape definition, a rasteriser, being a renderer that executes in raster-scan order, can receive the control points that define the outline, and the pixels corresponding to each cell of the grid is examined to determine whether the glyph is inside or outside of the outline. From this determination, the pixels values are calculated to produce the rasterised output. 6981330_1 P053223_speci lodge - 13 [0058] The present disclosure includes a method of hinting of scalable definitions to be utilised with a rasteriser. A typical text rasterisation system that includes a hinting mechanism performs a number of steps to display text on a screen. First the scalable definitions of glyphs are retrieved from a font file before being scaled to an appropriate target display size. Next, a hinting transformation step is applied to the scaled definitions before rasterised glyphs are produced from the scaled definitions. For the hinting step, the method of hinting is suitable for operating on a large number of glyphs featuring stems having orientations in at least one direction, for example horizontal and /or vertical. The method produces hinted glyphs with good stem and whitespace clarity. [0059] A first implementation will now be described with reference to a method 300 of Fig. 3. The method 300 is preferably represented as software stored on the HDD 110 of the computer 101 and executed by the processor 105 in concert with the memory 106. The method 300 operates to process glyphs to produce auto-hint data to be associated with each glyph, thus forming auto-hinted glyphs ready for rendering. In a first step 301 of the method 300, a plurality of vertically-oriented stems are determined from an input set of glyphs. Next at step 302, associations are created between each identified stem with a collection of control points, hereafter simply 'points'. The collection of points will be directly manipulated as a result of processing the associated stem and may correspond to non-stem points, such as the control points 204 and 205, and stem points, such as control points 201, 206, 207 and 208, as seen in Fig. 2. Once the collection of points are formed and associated with each stem, a first unprocessed stem is selected at step 303 from the collection of stems. Following the selection step 303, a displacement value is determined in step 304. The displacement value is determined by examining the distance between the vertical edges of the stem and boundaries of the pixel grid located adjacent to the vertical edges of the stem. [0060] A translation step 305 moves the set of control points associated with the current stem by the displacement value determined in step 304. Depending on the number of stems to be processed, in a particular implementation, the translation step 305 on a first iteration moves all control points associated with all stems (i.e. the entire glyph), and on a subsequent iterations, the translation step 305 moves the control points associated with the remaining stems, being a subset of the control points, and so on, until all stems have been processed. 6981330_1 P053223_speci lodge - 14 [0061] Next, at stem check step 306, a check is made to determine if all vertical stems have been processed. If all the vertical stems have been processed, then the process 300 completes at end step 307 and the final hinted glyph definition is produced for the current glyph and is ready for rendering by the computer 101. The final hinted definition comprises the translated set of control points and the closed outline formed therebetween together with associated fill information for the current glyph, thus forming an auto-hinted glyph. If more unprocessed stems remain, then the process continues back to step 303 where the next unprocessed stem is selected for processing. [0062] Once the glyph has been processed according to the method 300, the glyph may be rendered according to a conventional rendering process to reproduce the auto-hinted glyph on either the display 114 or on a print media by the printer 115. [0063] The step 301 of determining the plurality of vertical stems, is performed by analysing the sequence of points which define the outline of the glyph. An example glyph 400 is shown in Fig. 4 with the identified vertical stems 401, 402 and 403. The determination of the vertical stems is performed by first examining the vertical edges of the glyph. The vertical edges correspond to pairs of points, such as the pairs (404,406), (405,407), (408,410), and (409, 411), in the glyph outline definition where the sequence of points define a straight vertical edge between the pairs of points. Curved edges may also be considered to be vertical straight edges if it is determined to be approximately or near vertical and approximately or near straight. Edges may be considered to be approximately or near vertical if they are within a threshold tolerance of vertical while an approximately straight edge could be any edge with an edge direction variation less than five percent. The vertical strokes are detected by identifying vertical edges that are parallel, form regions that are filled by the renderer, and contain no other edges in between. [0064] Once the stems 401, 402 and 403 are detected, the next step is to produce sets of points which are associated with each stem as outlined in step 302 of Fig. 3. In the present implementation, the vertically-oriented stems are sorted in horizontal order before being processed in left-to-right order with a left-most stem being processed first. Each set of points contains points irrespective of features of the character that may be represented and may include points that correspond to stem features and points that correspond to non-stem features (for example the pair of points associated with the central join on the vertical stem in the letter B). 6981330_1 P053223_speci lodge - 15 The hinting, when performed on the sets of points, causes the features to be moved so as to apply hinting. [0065] The formation of the first set of points for the first stem will be described with reference to Fig. 7. The first set of points contains all points of the glyph 700 and is linked to the first stem. As shown in the example in the Fig. 7, a stem 701 if formed by the points 703, 704, 705 and 706, however all points within the region 702 of the glyph 700 are used to form the first set of points for the first stem. Such for example would include the points 707 and 708, to identify just a few. [0066] The formation of the second set of points, associated with the second stem is illustrated with reference to Fig. 8. The second identified stem in the example glyph 800 in Fig. 8 shows a stem 801 formed by the points 803, 804, 805 and 806. A set of points is then formed, by selecting all points with a horizontal position that is equal to, or to the right, of the left-edge of the stem 801. For the example glyph, the region 802 shows the region of which points are selected to form the second set of points. The second set of points associated with the region 802 is a subset of the first set of points associated with the region 702. [0067] A third set of points is formed and associated with the third stem of the example glyph in a similar manner to the formation of the second set of points. The formation of the third set of points, will now be described with reference to Fig. 9. The third identified stem of the example glyph 900 in Fig. 9 shows the stem 901 is formed by the points 903, 904, 905 and 906, within a region 902. A set of points is then formed by selecting all the points that have a horizontal position that is equal to, or to the right of, the left-edge of the stem 901. For the example glyph, the region 902 shows the region of containing points which are selected for the second set of points, which in this case includes only the points 903, 904 , 905, 906 of the third stem. This (third) set of points associated with the region 902 is a subset of the second set of points associated with the region 802. [0068] It should be noted that each of the sets of points described above reference the points of the glyph but do not hold copies of the point values. By forming sets which refer to the points by reference, only a single copy of the point value exists. When the translation step 305 of Fig. 3 is applied to the points within the sets, then the points which belong to subsequent 6981330_1 P053223_speci lodge - 16 unprocessed sets are updated with the newly translated values, thereby having an effect on subsequent translation steps. [0069] The step relating to determining the displacement value 304 of Fig. 3, will now be described in more detail with reference to Fig. 5. Fig. 5 shows a glyph 500 having a first stem 501 for which a displacement value is to be determined. When processing the stem 501, the closest distance from the stem edge to each boundary of the pixel is determined. The process of calculating the displacement to the closest pixel boundary is first performed on the left-edge of the stem, with the horizontal position 506 corresponding to the left stem edge being identified. Next the closest distance to the pixel boundary 505 is determined as d2 502. Next the same process is performed on the right-edge of the stem, where the horizontal position 507 of the right stem edge is determined, a closest pixel boundary position 508 is determined, and the distance is determined as d3 503. The value corresponding to the smaller magnitude of the values d2 502 and d3 503 is used as the displacement value. It should be noted that the displacement value is a signed value, whereby a positive value would cause a translation of the points towards the right and a negative value results in a translation of the points towards the left. The application of either of the values d2 502 or d3 503 would result in one of the stem edges to be aligned to the pixel grid. [0070] Fig. 5 shows a distance between the first stem 501 and the second stem 502 as distance dl 504, which is maintained even after the application of the translation step from the processing of the first stem 501. Fig. 6 shows the result of the translation of the first stem. If, in Fig. 5, the magnitude of the value d3 is determined to be less than the magnitude of the value d2, then the translation step 305 produces the positioned glyph 600 shown in Fig. 6. A stem 601 of the glyph 600 corresponds to the first stem 501 with the first translation step applied, resulting in the right-edge of the first stem being aligned to the pixel boundary 603. The distance between the right-edge position, which is the same as the pixel boundary position 603, and the position of left stem edge of the next stem 604, is preserved as dl 602 and has an identical value to the distance dl 504 as shown in Fig. 5. Essentially, the entire glyph 500 of Fig. 5 has be shifted to the right by the displacement d3, thus aligning the stem 501 (at least) with the pixel grid and representing in Fig. 6, an edge aligned glyph 600. [0071] The preservation of the distance between stem features, between iterations of the stem alignment steps, minimises the changes that occur between stems. As the position of the 6981330_1 P053223_speci lodge - 17 subsequent un-hinted stems are adjusted, as a result of the translation of the first stem, then the position of the next stem relative to the first stem is preserved before subsequent hinting steps are applied. With such an approach, the largest change that can occur to distances between stems is half a pixel. [0072] Once all stems are processed, and automated hinting of the previously un-hinted glyph has been completed, then a final hinted glyph is produced. Fig. 10 shows the example glyph 1000 having an outline 1001 in a final auto-hinted state with three stems 1002, 1003 and 1004 each having at least one edge aligned with and on a pixel boundary of the pixel grid 1005. Typically, the hinted glyph definition would be used by the rasteriser to produce the final rendered appearance for the character. Compared to the original non-hinted glyph of Fig. 2, the hinted glyph 1000 is seen to be somewhat squashed horizontally such that each stem 1002, 1003 and 1004 is aligned with a pixel boundary or edge. Notably in Fig. 10 there is exactly a 2-pixel spacing between the stems, whereas in Fig. 2, the stem spacing is approximately 2.4-pixels. [0073] In the example of Figs. 5 to 10, the vertically orientated stems were processed in left-to right order with each iterated determined displacement being applied to form an updated glyph such that, for each iteration, a current displacement associated with a current stem is applied to the points of the current stem, and also to a subset of the points of the glyph to one side of the current stem which may also include additional points sharing the same horizontal position of the stem such as point 807 shown in Fig. 8. [0074] In another implementation, horizontally-oriented stems are utilised instead of vertical stems. With reference to Fig. 11, this further implementation will be described where horizontal stems of a glyph are identified and processed in a method 1100, for example executed within the computer 100 by the processor 105. The method 1100 starts at a first step 1101, where the plurality of horizontal stems are determined. Next at step 1102, associations are created between points that define the glyph and each identified stem. Once the points are associated with each stem, a first unprocessed stem is selected at step 1103 from the collection of stems. Following the selection step 1103, a displacement value is determined in step 1104. This occurs by the processor 105 examining the distance between the edges of the horizontal stem and the boundaries of the pixel grid. The points associated with the current stem are then translated by the determined displacement value in a translation step 1105. Then, at stem check step 1106, if it is determined that all horizontal stems have already been processed, then the process 6981330_1 P053223_speci lodge - 18 completes at an end step 1107 and the final hinted glyph definition is produced. If more unprocessed stems exists, then the process 1100 continues back to stem selection step 1103 where the next unprocessed stem is selected for processing. [0075] While separate implementations have been described for the processing of vertical stems and horizontal stems, one may combine the implementations together by first performing the automated hinting for vertical stems to produce a horizontally-auto-hinted glyph, featuring hinted vertical stems, and then performing the automated hinting for horizontal stems on the horizontally-auto-hinted glyph to produce an auto-hinted glyph in both the vertical and horizontal directions. The order of the hinting, whether vertical is performed before horizontal or horizontal before the vertical, is not important as the processing of the implementations will produce the same output irrespective of the order. [0076] Fig. 12 shows an example glyph having a Unicode code-point value of 20117, featuring horizontal stems. The horizontal stems are automatically hinted according to the computer implemented method of Fig. 11 described above and in a manner similar to the vertical stems hinted by the method of Fig. 3 and described above in relation to Figs. 4 to 10. The determine stems step 1101 of Fig. 11 identifies six horizontal stem candidates 1201 - 1206. While the method of Fig. 11 processed identified stems in order, the glyph may be considered to be formed by two horizontal stems instead of the identified six. A first complex horizontal stem 1207 is composed of the horizontal stems 1201, 1202 and 1203, while a second complex horizontal stem 1208 is composed of horizontal stems 1204, 1205 and 1206. When one of the horizontal stems contained within a complex horizontal stem is processed and hinted, then the other unprocessed horizontal stems belonging to the same complex horizontal stem can also be hinted. If processing of remaining stems of the complex stem is performed after the complex stem has been hinted, then a zero displacement value will be calculated. The method of Fig. 11 may therefore be optimised by detecting the presence of complex stems and then selecting only a single stem from the complex stem for performing hinting. The complex stem may be formed from two or more stems that are aligned along an axis of the stems, or aligned along one edge of the stems. The alignments should be within a predetermined threshold, such as a quarter of a pixel. The single complex stem will then hint all of the stems that form that complex stem. Alternatively all stems may be processed irrespective of the presence of complex stems, and then skip the process of translating points when the displacement value derived is zero. 6981330_1 P053223_speci lodge - 19 [0077] While the first implementation of the formation of the set of points is performed by creating sets containing points configured to the right-side of the left-edge of the stem, which was described with reference to Fig. 7, Fig. 8 and Fig. 9, an alternative approach for creating sets of points will also be described. The alternative provides a method for generating sets of points associated with stems, as described earlier in steps 302. [0078] The alternative implementation for the formation of the sets of points will now be described in relation to Figs. 13A to 13C. The example glyph of Figs. 13A-13C, discussed above in Fig. 4, has three vertical stems. In this implementation, the order of the stem processing is performed according to the distance of the stem from the central position of the glyph. The central position may be derived according to the average of the bounding box extents of the glyph, or may be the median position of the glyph points, or from the averaging of the horizontal components of the control points of the glyph. In the example, as seen in Fig. 13A, the first stem processed is the central vertical stem 1301 of a glyph character having a region 1302. For the first stem 1301, a set of points containing all points are formed and associated with the central stem 1301. All points in the glyph correspond to all the points contained within the region 1302. As seen in Fig. 13B, the second stem 1303, located towards the left of the first processed stem is processed next and an association is formed between the stem and the points located to the left-side of the first processed stem. The points located to the left-side of the first processed stem correspond to the points in a region 1304. For the third stem 1305, shown in Fig. 13C, located towards the right of the first processed stem, the points located to the right-side of the first-process stem are selected and formed into a set and associated with the third stem. The points located to the right-side of the first processed stem correspond to the points in the region 1306. With this implementation for the formation of a set of points, the glyph is hinted in a way which suits glyphs with a symmetric arrangement of stems. In the example of Figs. 13A to 13C, for three stems, the central stem is processed first and then the outer two stems are essentially processed individually. Nevertheless each iterated determined displacement is applied to form an updated glyph such that, for each iteration, a current displacement associated with a current stem is applied to the points of the current stem, and also to a subset of the points of the glyph to one side of the current stem not including those points for which a displacement has already been determined. [0079] Another approach for the formation of the sets of points is described with reference to Figs. 14A to 14C. Here, instead of processing the identified stems from left-to-right, the stems 6981330_1 P053223_speci lodge - 20 are processed from right-to-left. For the example glyph shown in Figs. 14A to 14C, the stems are processed in the order of stem 1401, 1403 then 1405, with sets of points corresponding to the three stems being regions 1402, 1404 and 1406 respectively. The formation of the sets is performed by selecting the points to the left of the stem being processed and then associating the selected points with the stem for use during the translation steps. With this approach, the glyph is hinted in a way which is suitable for languages where characters are positioned from right-to left. [0080] The above mentioned arrangements for forming sets of points may also be configured to operate on horizontal stems. For example, the stems may be hinted top to bottom, bottom to top or from the centre out. Normally, during the processing of vertical stems, the formation of the sets of points is performed by analysing the horizontal component of the point values. When configured for horizontal stems, the sets of points are formed by analysing the vertical component of the point values instead. [0081] In another implementation, the translation of the control points of the glyph is updated only once. Such an arrangement will now be described with reference to a method 1500 shown in Fig. 15 where the process 1500 begins by determining a set of vertical stems of the glyph in a stem determination step 1501. Next, an adjustment value is initialised to zero at an initialisation step 1502. The adjustment value will be used to store a previous value of the adjustment value rather than applying the translations immediately. Next a stem is selected from the set of vertical stems for processing at a selection step 1503. Using the selected stem, a distance value is then determined in step 1504. When determining the distance value at the distance determination step 1504, the current adjustment value is taken into account when calculating a distance to a closest pixel boundary. Before calculating the distance of edges to the pixel boundary, the current adjustment value is added to the horizontal component of the edge positions and the distance to the pixel boundary is determined. Once the distance to the pixel boundary is determined, a position of the left-edge of the stem and the determined distance are appended to a transition list data structure in a storage step 1505. The current adjustment value is updated to the determined distance value in an update distance step 1506. Next, a determination is made to see if all stems are processed in a stem check step 1507, and if unprocessed stems exist, the process returns to the selection step 1503 where a next stem is selected for processing. The collective effect of steps 1503-1507 is that the transition list is 6981330_1 P053223_speci lodge - 21 filled with entries, ordered according to the stem processing ordering, with values that are later used for point translation in step 1510. [0082] When processing of the stems is complete, as determined at the stem check step 1507, processing then continues to a second loop where points of the glyph are translated. The second loop starts with a select next points step 1508 where a first point in the glyph is selected for processing. Once a point on the glyph is selected for an iteration of the second loop, the transition list is searched in step 1509 to find the first entry specifying a horizontal position that is greater than the horizontal position of the current point. Once the entry is found, then the determined distance stored in the transition list entry is used to translate the current point at a translate point step 1510. Then, a points check step 1511 is performed to check if all points have been processed. If any points remain to be processed, the process returns to step 1508 where a next point in the glyph is selected for processing, otherwise the process completes at end step 1512. [0083] While this implementation describes a method for hinting vertical stems in a left-to-right stem ordering, variations to this approach may be created to process horizontal stems, right-to left stem order processing, and also centre-outwards stem ordering. [0084] When the stems are processed, one may also improve performance by examining the distance between the edges of the stem. The distance between the edges of the stem is often known as the stroke width. When it is determined that the stroke width is greater than two pixels wide, then the renderer would be able to represent the stem using at least one high contrast pixel value. The implementation described above may be modified to perform the step of producing a plurality of stems, such as stem determination 1501 of Fig. 15, to include only stems with a stroke width less than or equal to 2 pixels wide. This modification may also be performed for step 301 of Fig. 3 and step 1101 of Fig. 11. INDUSTRIAL APPLICABILITY [0085] The arrangements described are applicable to the computer and data processing industries and particularly for the automated hinting of glyphs of character fonts to provide for clear rasterised rendering in certain reproduction environs. The arrangements may be implemented as part of a higher level application, such as a word processor application, 6981330_1 P053223_speci lodge - 22 whereupon auto-hinting occurs during rendering at certain font sizes and/or resolutions. Alternatively, one or more auto-hinted character sets each based upon a certain font style and formed of glyphs updated according to the present disclosure may be recorded to a storage medium (such as a CD-ROM) and supplied to users as an alternative character set for use by applications, such as word processors and the like. [0086] The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. [0087] (Australia Only) In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings. 6981330_1 P053223_speci lodge

Claims (19)

1. A method of rendering an auto-hinted glyph to a pixel grid of a display, the glyph being defined by a plurality of points, the method comprising: (a) determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; (b) determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; (c) forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; (d) determining a second displacement of a second stem of the plurality of stems to align the second stem of the edge aligned glyph with the pixel grid; (e) forming an updated glyph by moving the second stem, and a subset of the points to one side of the second stem, according to the second displacement; and (f) rendering, on the display, the updated glyph as the auto-hinted glyph.
2. A computer-implemented method of rendering a glyph to a pixel grid of an output device, the glyph being defined by a plurality of points, the method comprising: (a) determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; (b) determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; (c) forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; (d) repeating steps (b) and (c) for each remaining stem oriented in the first direction to form an updated glyph using a current determined displacement such that, for each iteration, the current displacement associated with a current stem is applied to the points of the current stem, and also to a subset of the points of the glyph to one side of the current stem not including those points for which a displacement has already been determined; and (e) rendering, to the output device, the updated glyph.
3. A method according to claim 1 or 2 wherein step (a) comprises analysing points that define edges of the glyph that are within a threshold tolerance of the orientation in the first direction to determine the stems. 6981330_1 P053223_speci lodge - 24
4. A method according to claim 1 or 2 wherein the stems are at least near vertically oriented.
5. A method according to claim 4 wherein the stems are processed in left-to-right order and the subset of points formed for each stem is located at a position equal to or to the right of the left-edge of stroke.
6. A method according to claim 4 wherein the stems are processed in right-to-left order and the subset of points formed for each stem is located at a position equal to or to the left of the right-edge of stroke.
7. A method according to claim 4 wherein the stems are processed in centre-outwards and the subset of points formed for each stem is located at a position that is towards the outwards direction of the current stem.
8. A method according to claim 1 or 2 wherein the stems are at least near horizontally oriented.
9. A method according to claim 8 wherein the stems are processed in bottom-to-top order and the subset of points formed for each stem is located at a position equal to or above the bottom-edge of stroke.
10. A method according to claim 8 wherein the stems are processed in top-to-bottom order and the subset of points formed for each stem is located at a position equal to or below the top edge of stroke.
11. A method according to claim 8 wherein the stems are processed in centre-outwards order and the subset of points formed for each stem is located at a position that is towards the outwards direction of the stem.
12. A method according to claim 7 or 11 wherein for centre-outwards processing the centre of the glyph is one of: (i) an average of the bounding box extent; 6981330_1 P053223_speci lodge - 25 (ii) an median of the points; and (iii) an average of the points.
13. A method according to claim 12 wherein the stems are processed according to a distance from centre.
14. A method according to claim 1 or 2 wherein step (a) comprises determining a stem as comprising a stroke having a width of at least 2 pixels.
15. A method according to claim 1 with respect to steps (a) to (e), or claim 2 with respect to steps (a) to (d), further comprising repeating the respective steps for stems having an orientation in a second direction.
16. A method according to claim 15 wherein the first direction is vertical and the second direction is horizontal.
17. A computer readable storage medium having a program recorded thereon, the program being executable by a computer to render an auto-hinted glyph to a pixel grid of a display, the glyph being defined by a plurality of points, the program comprising: code for determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; code for determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; code for forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; code for determining a second displacement of a second stem of the plurality of stems to align the second stem of the edge aligned glyph with the pixel grid; code for forming an updated glyph by moving the second stem, and a subset of the points to one side of the second stem, according to the second displacement; and code for rendering, on the display, the updated glyph as the auto-hinted glyph.
18. A computer readable storage medium having a character set in a font recorded thereon, the character set comprising a plurality of auto-hinted glyphs formed according to steps (a) to (e) of the method of claim 1. 6981330_1 P053223_speci lodge - 26
19. A computer apparatus comprising a processor, a memory and a display each coupled to the processor, and a computer program recorded to the memory, the program being executable by the processor to render an auto-hinted glyph to a pixel grid of the display, the glyph being defined by a plurality of points, the program comprising: code for determining a plurality of stems in the glyph, the stems each having an orientation in a first direction; code for determining a first displacement of a first stem of the plurality of stems, to align the first stem with the pixel grid; code for forming an edge aligned glyph by moving each of the plurality of points according to the determined first displacement to align the first stem with the pixel grid; code for determining a second displacement of a second stem of the plurality of stems to align the second stem of the edge aligned glyph with the pixel grid; code for forming an updated glyph by moving the second stem, and a subset of the points to one side of the second stem, according to the second displacement; and code for rendering, on the display, the updated glyph as the auto-hinted glyph. Dated this 20th day of December 2012 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson 6981330_1 P053223_speci lodge
AU2012268803A 2012-12-20 2012-12-20 Automatic hinting of outline fonts containing vertical and horizontal features Abandoned AU2012268803A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2012268803A AU2012268803A1 (en) 2012-12-20 2012-12-20 Automatic hinting of outline fonts containing vertical and horizontal features

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2012268803A AU2012268803A1 (en) 2012-12-20 2012-12-20 Automatic hinting of outline fonts containing vertical and horizontal features

Publications (1)

Publication Number Publication Date
AU2012268803A1 true AU2012268803A1 (en) 2014-07-10

Family

ID=51228840

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2012268803A Abandoned AU2012268803A1 (en) 2012-12-20 2012-12-20 Automatic hinting of outline fonts containing vertical and horizontal features

Country Status (1)

Country Link
AU (1) AU2012268803A1 (en)

Similar Documents

Publication Publication Date Title
US10929648B2 (en) Apparatus and method for data processing
Karni et al. Energy‐based image deformation
US9317773B2 (en) Patch-based synthesis techniques using color and color gradient voting
US9922623B2 (en) Emboldening of outline fonts
JP5340441B2 (en) Shape parameterization for editable document generation
KR20170137170A (en) Method and apparatus for text image processing
US9330466B2 (en) Methods and apparatus for 3D camera positioning using a 2D vanishing point grid
US11551388B2 (en) Image modification using detected symmetry
US20230124252A1 (en) Portrait stylization framework using a two-path image stylization and blending
US9317944B2 (en) Alignment of start and end of dashed curves
US9710869B2 (en) Method, system and apparatus for rendering a graphical object
CN110910433A (en) Point cloud matching method based on deep learning
US8711184B2 (en) Scalable pixel coverage function-map
US11055526B2 (en) Method, system and apparatus for processing a page of a document
AU2012268803A1 (en) Automatic hinting of outline fonts containing vertical and horizontal features
US20130155098A1 (en) Adjusting Fonts for Visual Consistency
US10395621B2 (en) Method, system and apparatus for modifying a font character
WO2016025980A1 (en) Rendering diffusion curve images using multigrid laplacian smoothing with boundary constraint pixels
CN113391799A (en) Interface code generation method, layer processing method and device and computing equipment
Li et al. Video vectorization via bipartite diffusion curves propagation and optimization
CN105741271B (en) Method for detecting object in depth image
AU2014277851A1 (en) Detecting a gap between text columns from text line fragments
Hensel et al. LSTM Architectures for Facade Structure Completion.
US9779526B2 (en) Method, system and apparatus for determining area of a pixel covered by a scalable definition for a character
WO2021160097A1 (en) System and method for object detection for augmented reality

Legal Events

Date Code Title Description
MK4 Application lapsed section 142(2)(d) - no continuation fee paid for the application