WO2018139700A1 - 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 - Google Patents

외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 Download PDF

Info

Publication number
WO2018139700A1
WO2018139700A1 PCT/KR2017/002365 KR2017002365W WO2018139700A1 WO 2018139700 A1 WO2018139700 A1 WO 2018139700A1 KR 2017002365 W KR2017002365 W KR 2017002365W WO 2018139700 A1 WO2018139700 A1 WO 2018139700A1
Authority
WO
WIPO (PCT)
Prior art keywords
font
metafont
points
attribute
code
Prior art date
Application number
PCT/KR2017/002365
Other languages
English (en)
French (fr)
Inventor
최재영
권경재
손민주
정근호
Original Assignee
숭실대학교 산학협력단
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 숭실대학교 산학협력단 filed Critical 숭실대학교 산학협력단
Priority to CN201780042717.4A priority Critical patent/CN109478200B/zh
Priority to JP2019521360A priority patent/JP2019528485A/ja
Priority to US16/305,486 priority patent/US11036917B2/en
Publication of WO2018139700A1 publication Critical patent/WO2018139700A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/20Function-generator circuits, e.g. circle generators line or curve smoothing circuits
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • G09G5/28Generation of individual character patterns for enhancement of character form, e.g. smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Definitions

  • Embodiments of the present invention relate to an apparatus and method for generating fonts by METAFONT, and more particularly, by using an outline font editing method, a new font is generated in real time and a font is created by an outline editing method when a new font is generated. It is possible to save time and money more than ever, and to provide an apparatus and method for generating a font without learning METAFONT.
  • Text is an effective way to record and communicate information.
  • users use more digital fonts to represent text on digital devices than analog fonts such as handwriting.
  • digital fonts of various styles are being produced.
  • bitmap font type makes each character a bitmap image, and a separate file for each size must be prepared to support the font size.
  • Outline font is a type of font that draws the shape of letters as a function, and it works by filling the inner area after drawing the outline of the font using straight lines and curves. Outline font is free to control the size of the font by calculating the outline information, regardless of the size of the font can be used and high quality output is possible.
  • bitmap fonts and outline fonts there are disadvantages in that they must be modified manually in order to change styles such as stroke thickness and shape of a previously completed font.
  • bitmap fonts are fixed image fonts
  • new fonts must be created according to the font size. Therefore, it takes a lot of time to produce a font according to the required character size, there is a disadvantage that the storage capacity of the font data is very large.
  • the outline font that can improve these disadvantages has all the size of the characters because the size of the font is free to control the size of the font, and compared to the bitmap font having a large storage capacity, only one font data is required.
  • the load of the system is high because of a complicated mathematical processing process, and the larger the number of points and lines, the greater the load.
  • the outline font has only the reference point and control point information of the character in order to represent the character, and does not have information about the stroke. Therefore, there is a disadvantage that the font designer must modify the reference point and control point manually in order to change the style such as the stroke thickness and shape of the previously completed font.
  • METAFONT has been studied that uses the strokes of letters and the shape of pens.
  • METAFONT is a programming language for expressing fonts, which can represent a variety of characters, depending on the values specified in the code. As a result, you can easily create fonts in a variety of styles by making the styles changeable as parameters and changing the values of the parameters.
  • METAFONT is a textual programming language rather than an image for output, which makes it difficult for font designers who are not familiar with programming.
  • METAFONT is a textual programming language rather than an image for output, which makes it difficult for font designers who are not familiar with programming.
  • the font development using METAFONT is expensive and time-consuming because it is written by the METAFONT programming development tool instead of the graphic tool.
  • the attribute for the METAFONT in the code of the outline font described in XML Generating an intermediate code by adding (a); And (b) generating a font by the METAFONT by using the information of the points obtained by parsing the intermediate code.
  • the attribute for the METAFONT may include a first attribute for designating two points as pairs of the points for forming an outline, and a second attribute for designating whether an inner region of the outline is filled.
  • the attribute for the METAFONT may further include at least one of a third attribute for changing the position coordinate of the point B and a fourth attribute for setting a serif of the point depending on the position coordinate of the point A in which the position coordinate is set in advance. Can be.
  • the outline font is in a UFO (Unified Font Object) format, and an attribute for the METAFONT may be included in a 'point' tag in the code of the UFO.
  • UFO Unified Font Object
  • the code of the outline font and the intermediate code may represent a Cubic curve consisting of four points and a Quadratic curve consisting of three points, but the code of the METAFONT may represent only the Cubic curve, and the step (b) May convert a quadratic curve in the intermediate code into a cubic curve in the METAFONT using the following equation.
  • CP0 and CP3 are two reference points among the four points
  • CP1 and CP 2 are two control points among the four points
  • QP0 and QP2 are two reference points among the three points
  • QP1 is among the three points.
  • an apparatus for generating a font by METAFONT comprising: an intermediate code generator for generating an intermediate code by adding an attribute for the METAFONT to a code of an outline font described in XML; And an output font generator for generating a font by the METAFONT by using the information of the points obtained by parsing the intermediate code.
  • a new font is generated in real time, and when creating a new font, the time and cost can be reduced than when creating a font by an outline editing method, and there is an advantage of generating a font even without learning METAFONT.
  • 1 is a diagram illustrating an example of expressing a curve using four points in METAFONT.
  • FIG. 2 shows an example of a code in which the alphabet letter 'B' is programmed with METAFONT.
  • FIG. 3 is a diagram illustrating an example of METAFONT in which a style of a letter is modified by changing a variable.
  • FIG. 4 is a diagram illustrating a schematic configuration of a font generating apparatus according to an embodiment of the present invention.
  • FIG. 5 is a flowchart illustrating a flowchart of a font generation method according to an embodiment of the present invention.
  • FIG. 6 is a representative diagram illustrating a detailed structure of a system for practicing the present invention.
  • FIG. 7 is a diagram illustrating a code of a conventional UFO.
  • FIG 8 illustrates an example of an intermediate code according to an embodiment of the present invention.
  • FIG. 9 is a view for explaining a curve representation method according to an embodiment of the present invention.
  • METAFONT is a font supply system used by TeX. It consists of a 'letter drawing function' that expresses how to draw every letter and a 'style parameter' that decorates letters. In other words, the method of drawing letters is decided, but since the style determining parameter (style value) is separated, METAFONT can change the style parameter to the font of the desired style.
  • Cubic Bezier curves are used to represent the curves of characters, as shown in FIG. 1.
  • the curve is defined as four points.
  • P0 and P3 are reference points of the curve
  • P1 and P2 are control points for providing directions.
  • the curve is drawn from P0 to P1 and arrives at P3 in the P2 direction, and obtains various free curves by moving the control point.
  • the control points P1 and P2 do not pass over the curve, they merely provide direction information.
  • METAFONT is a programming language
  • various fonts can be created by changing the size, thickness, and pen shape freely. can do.
  • FIG. 2 illustrates a source code of METAFONT for representing the alphabet letter 'B'
  • FIG. 3 (a) illustrates a result generated by executing the source code of FIG. 2.
  • the stem variable defined in the second line of the source code is a variable that affects the thickness of a character. When the stem value is changed, the thickness of the character is changed as a whole, which can be seen in FIG.
  • FIG. 4 is a diagram illustrating a schematic configuration of a font generating apparatus according to an embodiment of the present invention.
  • the font generating apparatus 400 is an apparatus for generating a font by METAFONT, and includes an input unit 410, an intermediate code generator 420, and an output font generator 430. ).
  • FIG. 5 is a flowchart illustrating a flowchart of a font generation method according to an embodiment of the present invention.
  • the method may be performed by the font generating apparatus 400 which is a device including a processor.
  • FIG. 6 is a representative diagram illustrating a detailed structure of a system for implementing the present invention.
  • the input unit 410 receives a code of the complete outline font or the complete appearance font.
  • the completed outline font is a font described in XML, and may be a font generated by a font designer.
  • step 520 the intermediate code generator 420 generates the intermediate code by adding the attribute of METAFONT to the code of the outline font described in XML.
  • the output font generator 430 generates a font by METAFONT using the information of the points obtained by parsing the intermediate code.
  • the intermediate code generator 420 generates the intermediate code by adding attributes necessary for the METAFONT and attributes for supporting the special functions used in the METAFONT to the outline font method (described in XML) that the font designer is familiar with.
  • the output font generator 430 receives the intermediate code as an input file, calculates the data obtained by parsing to generate a METAFONT code, and the font user changes a parameter value for changing the style in the generated METAFONT code. You can create style fonts.
  • the outline font may be a font according to a Unified Font Object (UFO).
  • UFO Unified Font Object
  • UFOs have a directory structure unlike regular outline fonts that consist of a single file.
  • UFOs specify font data in XML so that both humans and machines can read it.
  • the 'point' tag defines a position of a point using 'x' and 'y' attributes to represent a straight line or a curve. Also, select the type of line using 'line', 'curve' and 'qcurve' in the 'type' attribute. In the case of 'line', a line is drawn by connecting the points of the previous 'point' tag and the current 'point' tag.
  • 'Curve' and 'qcurve' represent Cubic Bezier curves and Quadratic Bezier curves. Curves require a control point and a control point, so define a control point by adding a 'point' tag without a 'type' attribute between the two control points.
  • UFOs The biggest feature of UFOs is that you can define tags or attributes in undefined XML. By using this, the data necessary for the system may be added to the code of the UFO, parsed, and used in the above-described steps 520 and 530.
  • the attribute for METAFONT added in step 520 may be expressed as shown in Table 1 below, which may be included in the 'point' tag of the UFO code shown in FIG. have.
  • METAFONT draws the skeleton of the letter as if writing it by hand, and then moves the pen along the flow of the skeleton to draw the character. Therefore, the thickness of characters that are difficult to modify in outline fonts can be easily modified in METAFONT using a function that adjusts the thickness of the pen filling the skeleton.
  • both ends of the pen should be defined in order to use a function to control the thickness of the pen. That is, a task of pairing the points existing in the UFO with the end points of the pen is necessary, and a first property penPair is used for this purpose.
  • the first property penPair is an attribute for designating two points as pairs among the points for constructing the outline, and is an essentially added property.
  • the thickness can be adjusted by obtaining information that two points are a pair.
  • METAFONT has a different function for filling or emptying an inner region formed by an outline, and a second attribute (innerType) is used for this purpose. That is, the second property (innerType) is specified at the start of the outline and is a property for specifying whether to fill the inner region of the outline, which is an essential property.
  • the third attribute is an attribute for changing the position coordinate of the point B in dependence on the position coordinate of the point A in which the position coordinate is set in advance
  • the fourth attribute is for setting the serif of the point.
  • this is an optional attribute.
  • the present invention provides a custom parameter attribute that enables the user to change the positions of specific points in common, and by using this, the user can parameterize the desired part.
  • FIG. 8 shows an example of an intermediate code (MetaUFO) according to the present invention. That is, in FIG. 8 (a), an intermediate code in which an attribute for METAFONT is added to a UFO in order to express a phoneme ' ⁇ ' is shown. In FIG. 8 (b), an intermediate code shown in (a) of FIG. The code is illustrated. In addition, in FIG. 8C, the phoneme ' ⁇ ' (including serifs) of METAFONT generated through FIGS. 8A and 8B is illustrated.
  • 'penPair' (first attribute) is added to a 'point' tag in a UFO code.
  • 'zNl' and 'zNr' show that two points are paired together.
  • 'l' is a symbol representing the left point
  • 'r' is a symbol representing the right point. That is, 'z1l' and 'z1r' are bundled into one phase, 'z2l' and 'z2r' are bundled into one phase, 'z3l' and 'z3r' are tied into one phase, and 'z4l' And 'z4r' are combined into a single phase.
  • an 'innerType' (second attribute) is added to the 'point' tag in the UFO code.
  • 'innerType' is set to 'fill' in the first 'point' tag.
  • 'dependX' (third attribute) is added to the 'point' tag in the UFO code.
  • 'z3r' is defined, and 'z3r' depends on 'x2r', which is the x-axis coordinate of 'z2r', the point whose position coordinate is set in advance, and changes its position as much as the thickness change of the point. Move.
  • 'z3l' is defined, and 'z3l' is based on the x-axis coordinate 'x1r' of 'z1r', which is a position coordinate that is set in advance.
  • 'z3l' and 'z3r' are set to move in the same way as the amount of change in the x coordinate of 'z1r' and 'z2r', depending on the x-axis coordinates of 'z1r' and 'z2r', respectively.
  • a 'serif' (fourth attribute) is added to the 'point' tag in the UFO code. That is, a serif is added to both ends z1l and z2l of the vertical stroke. At this time, the serif is represented at the corresponding position of the font by METAFONT generated in the output font generator 430.
  • the output font generator 430 generates a font by METAFONT using information on points acquired by parsing the intermediate code MetaUFO as described above.
  • the output font generator 430 may be implemented in Python, and may parse the intermediate code (MetaUFO) using XML Parser, a library provided by Python.
  • the output font generator 430 calculates the data obtained through parsing as necessary data from the METAFONT to create a METAFONT code.
  • a function corresponding to the property of METAFONT added by the user is called for further processing.
  • the METAFONT code is then generated using the 14 parameters provided to the user to change the style of the text. This parameter can be added or deleted as needed.
  • the output font generator 430 may generate characters by calling necessary characters for the initial, neutral, and final characters stored in the file. To this end, the output font generator 430 may use the data obtained through parsing to determine whether the file to be processed is a phoneme or a character calling a phoneme, and execute a corresponding routine accordingly.
  • the output font generator 430 determines the phoneme to be referred to and together with the METAFONT function calling the corresponding phoneme, the parameter applied to each phoneme only. Create together.
  • the output font generation unit 430 generates a code by applying the width, height, and slope parameters of the character that affects the overall style of the character.
  • the output font generator 430 expresses the character as METAFONT using the information of the points obtained by parsing.
  • the output font generator 430 first defines a reference point, sets a thickness for a pair of two points, and then defines a control point and then uses a function to draw a curve. Express Therefore, using the data obtained by parsing in this manner, the output font generator 430 writes code and applies various parameters that affect characters.
  • the UFO expresses the outline of the character in three ways: a straight line, a cubic curve consisting of four points, and a quadratic curve consisting of three points.
  • the code of the UFO and the middle code can represent both the Cubic curve and Quadratic curve, while the code of the METAFONT can represent only the Cubic curve.
  • the output font generator 430 of the present invention may generate a code for converting a quadratic curve in the middle code (MeatUFO) into a cubic curve in the METAFONT using Equation 1 below.
  • CP0 and CP3 are two reference points of four points for Cubic curves
  • CP1 and CP 2 are two control points of four points for Cubic curves
  • QP0 and QP2 are two of three points for Quadratic curves.
  • the reference point, QP1 represents one control point of each of the three points for the quadratic curve.
  • Quadratic Bezier curve is quadratic
  • a start point P0, an end point P2, and one control point P1 are required as shown in FIG.
  • More complex curves are expressed by connecting a plurality of curves as connecting quadratic Bezier curves (P0, P1, P2) and (P2, P3, P4) as shown in FIG.
  • multiple connected Quadratic Bezier curves appear as a single curve. That is, as shown in (c) of FIG. 9, a reference point between two control points of a continuous curve may be omitted and may be expressed as a start point, an end point, and two control points. Since the connected curves share the same reference point, they have the same tangent inclination with respect to the reference point.
  • the present invention includes a function of converting a curved representation of an outline font represented by a quadratic curve method and a cubic curve method into a cubic curve so that both curve expressions can be expressed by METAFONT. This operation proceeds to an output font generator 430 (step 530).
  • the present invention generates a new font by applying a METAFONT attribute to a UFO, which is a form of an outline font, to generate a METAFONT code.
  • Conventional outline fonts are not free to change the thickness or style of characters, but METAFONT can use the parameters to freely change the style. Therefore, even without the 'font family' of the outline font, which had to be made and provided in multiple sets according to the style change such as thickness, one can create the METAFONT code with one basic outline font and adjust the thickness freely according to the parameters that the user adjusts. .
  • various types of characters can be created using parameters provided according to the characteristics of Hangul.
  • embodiments of the present invention can be implemented in the form of program instructions that can be executed by various computer means may be recorded on a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Examples of program instructions such as magneto-optical, ROM, RAM, flash memory, etc.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of one embodiment of the present invention, and vice versa.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

외곽선 폰트를 이용하여 METAFONT에 의한 폰트를 생성하는 장치 및 방법이 개시된다. 개시된 폰트 생성 장치는 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함한다.

Description

외곽선 폰트를 이용하여 METAFONT에 의한 폰트를 생성하는 장치 및 방법
본 발명의 실시예들은 METAFONT에 의한 폰트를 생성하는 장치 및 방법에 관한 것으로서, 보다 상세하게는 외곽선 폰트의 편집 방식을 이용함으로써 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장치 및 방법에 관한 것이다.
글(text)은 정보를 기록하고 전달하는 효과적인 방법이다. 스마트 기기가 보편화되면서 사용자는 핸드라이팅(handwriting)과 같은 아날로그 폰트보다는 디지털 기기에 글자 표현하는 디지털 폰트를 더 많이 사용한다. 이러한 환경 속에서 다양한 스타일의 디지털 폰트들이 제작되고 있다.
일반적으로 사용되는 디지털 폰트는 비트맵 폰트 타입과 외곽선 폰트 타입이 있다. 비트맵 폰트는 각각의 글자를 모두 비트맵 이미지로 작성하며, 글씨의 크기를 지원하기 위해 각 크기에 대한 별도의 파일이 준비되어야 한다. 외곽선 폰트는 글자의 모양을 그리는 방법을 함수로 작성한 폰트 타입으로서, 직선과 곡선을 사용하여 폰트의 외곽선을 그린 후, 내부 영역을 채우는 방식으로 동작한다. 외곽선 폰트는 외곽선 정보를 계산하여 글자의 크기 조절이 자유롭기 때문에 크기에 상관없이 폰트를 사용할 수 있으며 고품질의 출력이 가능하다. 하지만, 비트맵 폰트 및 외곽선 폰트의 경우, 기존에 완성된 폰트의 획의 굵기, 모양과 같은 스타일의 변화를 주기 위해서는 일일이 수정해야 하는 단점이 있다.
보다 상세하게, 비트맵 폰트는 고정된 이미지 폰트이므로, 폰트의 크기에 따라 새로운 폰트를 제작해야 한다. 따라서, 요구되는 글자 크기에 따라 폰트를 제작하는데 소요되는 시간이 많으며, 폰트 데이터의 저장 용량이 매우 커지는 단점이 있다.
이러한 단점을 개선할 수 있는 외곽선 폰트는 글자의 크기 조절이 자유롭기 때문에 모든 크기의 글자를 가지고 있으므로, 저장 용량이 큰 비트맵 폰트에 비해 하나의 폰트 데이터만 필요하므로 저장 용량이 작아지는 장점이 있다. 하지만, 복잡한 수학적 처리 과정인 레스터 과정을 거치므로 시스템의 부하가 크며, 점(point)과 선(line)의 수가 많으면 많을수록 부하가 더욱 커지는 단점이 있다. 또한, 외곽선 폰트는 글자를 표현하기 위하여 글자의 기준점과 조절점 정보만 가지고 있을 뿐이며, 획에 대한 정보를 가지고 있지 않다. 따라서 폰트 디자이너가 기존에 완성된 폰트의 획의 굵기, 모양과 같은 스타일의 변화를 주기 위해서는 기준 점과 조절 점을 일일이 수정해야 하는 단점이 있다.
이러한 비트맵, 외곽선 폰트와는 다르게 글자의 획과 펜의 모양을 사용하는 METAFONT가 연구되었다. METAFONT는 폰트를 표현하는 프로그래밍 언어로써, 코드에 명시된 값에 따라 다양한 글자를 표현할 수 있다. 따라서, 코드를 작성할 때 변화가 가능한 스타일을 매개변수로 만들고, 매개변수의 값을 변화시킴으로써 다양한 스타일의 폰트를 쉽게 생성할 수 있다.
하지만, METAFONT는 출력을 위한 이미지가 아니라 텍스트 형식의 프로그래밍 언어이므로 프로그래밍에 익숙하지 않은 폰트 디자이너가 직접 사용하기 어렵다. 또한, 디자인에 익숙하지 않은 METAFONT 개발자가 폰트를 제작하는 경우, 그래픽 도구가 아닌 METAFONT 프로그래밍 개발 툴로 작성해야 하기 때문에 METAFONT를 이용한 폰트 개발은 많은 비용과 시간이 소요된다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 외곽선 폰트의 편집 방식을 이용함으로써 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장치 및 방법을 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함하는 것을 특징으로 하는 폰트 생성 방법이 제공된다.
상기 METAFONT를 위한 속성은, 외곽선을 구성하기 위한 상기 점들 중 2개의 점을 쌍으로 지정하기 위한 제1 속성, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 제2 속성을 포함할 수 있다.
상기 METAFONT를 위한 속성은, 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 제3 속성 및 점의 세리프를 설정하기 위한 제4 속성 중 적어도 하나를 더 포함할 수 있다.
상기 외곽선 폰트는 UFO(Unified Font Object) 형식이며, 이고, 상기 METAFONT를 위한 속성은 상기 UFO의 코드 내의 'point' 태그 내에 포함될 수 있다.
상기 외곽선 폰트의 코드 및 상기 중간 코드는 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선을 표현할 수 있으나, 상기 METAFONT의 코드는 상기 Cubic 곡선만을 표현할 수 있으며, 상기 단계 (b)는, 아래의 수학식을 이용하여 상기 중간 코드에서의 Quadratic 곡선을 상기 METAFONT에서의 Cubic 곡선으로 변환할 수 있다.
Figure PCTKR2017002365-appb-I000001
여기서, CP0 및 CP3는 상기 4개의 점 중 2개의 기준점, CP1 및 CP 2는 상기 4개의 점 중 2개의 조절점, QP0 및 QP2는 상기 3개의 점 중 2개의 기준점, QP1는 상기 3개의 점 중 1개의 조절점을 각각 의미한다.
또한, 본 발명의 다른 실시예에 따르면, METAFONT에 의한 폰트를 생성하는 장치에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 중간 코드 생성부; 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 출력 폰트 생성부;를 포함하는 것을 특징으로 하는 폰트 생성 장치가 제공된다.
본 발명에 따르면, 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장점이 있다.
또한, 본 발명의 효과는 상기한 효과로 한정되는 것은 아니며, 본 발명의 상세한 설명 또는 특허청구범위에 기재된 발명의 구성으로부터 추론 가능한 모든 효과를 포함하는 것으로 이해되어야 한다.
도 1은 METAFONT에서, 4개의 점을 이용하여 곡선을 표현하는 일례를 도시한 도면이다.
도 2는 알파벳 글자 'B'를 METAFONT로 프로그래밍한 코드의 일례를 도시한 도면이다.
도 3은 변수 변경을 통해 글자의 스타일이 변형되는 METAFONT의 일례를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 폰트 생성 장치의 개략적인 구성을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 폰트 생성 방법의 흐름도를 도시한 순서도이다.
도 6은 본 발명의 실시를 위한 시스템의 상세한 구조를 도식화한 대표 도면이다.
도 7은 종래의 UFO의 코드를 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따른 중간 코드의 일례를 도시한 도면이다.
도 9은 본 발명의 일 실시예에 따른 곡선 표현 방식을 설명하기 위한 도면이다.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 본 발명의 다양한 실시예들을 첨부된 도면을 참조하여 상술한다.
먼저, 본 명세서에는 본 발명의 기초가 되는 METAFONT의 개념에 대해 설명하기로 한다.
METAFONT는 TeX에서 사용하는 글꼴 공급 시스템이며, 모든 글자마다 그리는 방법을 표현한 '글자 그리기 함수'와 글자를 꾸미는 '스타일 파라미터'로 구성된다. 즉, 글자를 그리는 방법은 정해져 있지만 스타일을 결정하는 파라미터(스타일 값)이 분리되어 있으므로, METAFONT는 스타일 파라미터를 변경하여 얼마든지 원하는 스타일의 폰트로 변형할 수 있다.
그리고, METAFONT에서는 Cubic 베지어 곡선을 이용하여 문자의 곡선을 표현하며, 이는 도 1에 도시된 바와 같다. 도 1을 참조하면, 곡선은 4개의 점(point, 점)으로 정의된다. 이 때, P0와 P3를 곡선의 기준점이고, P1과 P2는 방향을 제공하는 조절점이다. 곡선은 P0에서 P1 방향으로 시작되어서 P3에 P2 방향으로 도착해서 그려지며, 조절점의 이동으로 다양한 자유 곡선을 얻는다. 여기서, 조절 점 P1과 P2는 곡선 위를 통과하지 않으며, 단순히 방향 정보만 제공한다.
또한, METAFONT는 프로그래밍 언어이므로 코드를 작성할 때 변화가 가능한 스타일을 매개변수로 만들 수 있으며, 이 매개변수의 값을 변화시킴으로써 문자의 크기, 굵기, 그리고 펜의 모양 등을 자유롭게 변경하여 다양한 폰트를 생성할 수 있다.
일례로, 도 2에서는 알파벳 글자 'B'를 표현하기 위한 METAFONT의 소스코드를 도시하고 있으며, 도 3의 (a)는 도 2의 소스코드를 실행하여 생성된 결과물을 도시하고 있다. 소스코드 2번째 줄에 정의되어 있는 stem 변수는 문자의 굵기에 영향을 주는 변수이며, stem 값을 변화시키면 문자의 굵기가 전체적으로 변화하게 되며, 이는 도 3의 (b)에서 확인할 수 있다.
도 4는 본 발명의 일 실시예에 따른 폰트 생성 장치의 개략적인 구성을 도시한 도면이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 폰트 생성 장치(400)는 METAFONT에 의한 폰트를 생성하는 장치로서, 입력부(410), 중간 코드 생성부(420) 및 출력 폰트 생성부(430)를 포함한다.
그리고, 도 5는 본 발명의 일 실시예에 따른 폰트 생성 방법의 흐름도를 도시한 순서도이다. 이 때, 상기 방법은 프로세서가 포함된 장치인 폰트 생성 장치(400)에서 수행될 수 있다.
그리고, 도 6은 본 발명의 실시를 위한 시스템의 상세한 구조를 도식화한 대표 도면이다.
이하, 도 4 내지 도 6를 참조하여 각 구성 요소 별 기능 및 각 단계 별로 수행되는 과정을 설명하기로 한다.
먼저, 단계(510)에서, 입력부(410)는 완성된 외곽선 폰트 내지 완성된 외관선 폰트의 코드를 입력받는다. 이 때, 완성된 외곽선 폰트는 XML로 기술된 폰트로서, 폰트 디자이너가 생성한 폰트일 수 있다.
다음으로, 단계(520)에서, 중간 코드 생성부(420)는 XML로 기술된 외곽선 폰트의 코드에 METAFONT의 속성을 추가하여 중간 코드를 생성한다.
계속하여, 단계(530)에서, 출력 폰트 생성부(430)는 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 METAFONT에 의한 폰트를 생성한다.
즉, 본 발명은 폰트 디자이너가 익숙한 외곽선 폰트 방식(XML로 기술됨)에 METAFONT에 필요한 속성과 METAFONT에서 사용하는 특수한 기능들을 지원하기 위한 속성을 추가하여 중간 코드 생성부(420)에서 중간 코드를 생성하며, 출력 폰트 생성부(430)는 중간 코드를 입력 파일로 받아 파싱하여 얻은 데이터를 계산하여 METAFONT 코드를 생성하며, 폰트 사용자는 생성된 METAFONT 코드에서 스타일을 변경할 수 있는 매개변수 값을 변경하여 다양한 스타일의 폰트를 생성할 수 있다.
본 발명의 세부적인 구성에 대해 살펴보면 다음과 같다.
본 발명의 일 실시예에 따르면, 외곽선 폰트는 UFO(Unified Font Object)에 따른 폰트일 수 있다.
UFO은 하나의 파일로 이루어진 일반적인 외곽선 폰트와는 다르게 디렉터리 구조로 되어 있다. 또한, 바이너리 형태로 이루어진 다른 외곽선 폰트와는 다르게 UFO은 폰트 데이터를 XML로 기술하여 사람과 기계 모두가 읽을 수 있는 형식을 갖도록 규정된다.
도 7은 종래의 UFO의 코드를 도시한 도면이다. 도 7을 참조하면, 'point' 태그는 직선 또는 곡선을 표현하기 위하여 'x'와 'y' 속성을 이용하여 점의 위치를 정의한다. 또한 'type' 속성에 'line', 'curve' 및 'qcurve' 등을 이용하여 선의 종류를 선택한다. 'line'일 경우, 이전 'point' 태그와 현재 'point' 태그의 점을 이어 직선을 표현한다. 그리고 'curve'와 'qcurve'는 곡선의 종류 중 Cubic 베지어 곡선과 Quadratic 베지어 곡선을 나타낸다. 곡선은 기준점과 조절점이 필요하므로 두 개의 기준점 사이에 'type' 속성이 없는 'point' 태그를 추가하여 조절점을 정의한다.
UFO의 가장 큰 특징은 정의되어 있지 않은 XML의 태그나 속성을 사용자가 정의할 수 있다. 이를 이용하여 상기한 단계(520) 및 단계(530)에서 시스템에 필요한 데이터를 UFO의 코드에 추가하고 파싱하여 사용할 수 있다.
이하, 설명의 편의를 위해, 외곽선 폰트를 UFO로 가정하여 설명하기로 한다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
그리고, 본 발명의 일 실시예에 따르면, 단계(520)에서 추가되는 METAFONT를 위한 속성은 아래의 표 1과 같이 표현될 수 있으며, 이는 도 7에서 도시된 UFO 코드의 'point' 태그 내에 포함될 수 있다.
표 1
속성명 설명 필수 or 선택
penPair(제1 속성) 두 개의 점을 한 쌍으로 지정한다. 필수(모든 점)
innerType(제2 속성) 외곽선 내부영역을 채우는지(fill), 비우는지(unfill) 지정한다. 필수(시작 점)
dependX(Y)(제3 속성) X(Y) 좌표의 변화를 설정한 점에 의존한다. 선택
serif(제4속성) 세리프를 설정한다. 선택
구체적으로, METAFONT는 외곽선 폰트와는 다르게 손으로 글자를 쓰듯이 글자의 뼈대를 그린 후 펜을 뼈대의 흐름에 따라 이동하면서 문자를 그리는 방식이다. 따라서, 외곽선 폰트에서 수정하기 힘든 문자의 굵기를 METAFONT에서는 뼈대를 채우는 펜의 굵기를 조절하는 함수를 이용하여 쉽게 변형할 수 있다. 이 때, 펜의 굵기를 조절하는 함수를 사용하기 위하여 펜의 양 끝점을 정의해야 한다. 즉, UFO에 존재하는 점들을 펜의 양 끝점에 맞게 쌍으로 묶어주는 작업이 필요하며, 이를 위해 제1 속성(penPair)이 사용된다. 제1 속성(penPair)은 외곽선을 구성하기 위한 점들 중 2개의 점을 쌍으로 지정하기 위한 속성으로서, 필수적으로 추가되는 속성이다. 여기서, 기존에 UFO에 존재하는 태그인 'point'에 'penPair'라는 속성을 추가하여 두 개의 점이 한 쌍이라는 정보를 얻어 굵기를 조절할 수 있다.
그리고, METAFONT는 외곽선을 이어 생긴 내부 영역을 채우거나 비울 때 사용하는 함수가 다르며, 이를 위하여 제2 속성(innerType)이 사용된다. 즉, 제2 속성(innerType)은 외곽선의 시작점에 명시되며, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 속성으로서, 이는 필수적으로 포함되는 속성이다.
또한, 제3 속성(dependX(Y))는 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 속성이고, 제4 속성(serif)은 점의 세리프를 설정하기 위한 속성으로서, 이는 선택적으로 포함되는 속성이다.
이외에도 본 발명은 사용자가 특정한 점의 위치들을 공통으로 변화시킬 수 있도록 할 수 있는 커스텀 매개변수 속성을 제공하며, 이를 이용하여 사용자는 자신이 원하는 부분을 매개변수화 할 수 있다.
이하, 도 8 및 도 9을 참조하여, METAFONT을 위한 속성을 상세하게 설명하기로 한다.
도 8은 본 발명에 따른 중간 코드(MetaUFO)의 일례를 도시한 도면이다. 즉, 도 8의 (a)에서는 자소 'ㅏ'를 표현하기 위하여 UFO에 METAFONT을 위한 속성이 추가된 중간 코드를 도시하고 있으며, 도 8의 (b)에서는 도 8의 (a)에 도시된 중간 코드를 그림으로 나타내고 있다. 그리고, 도 8의 (c)에서는 도 8의 (a) 및 (b)을 통해 생성된 METAFONT의 자소 'ㅏ'(세리프 포함)를 도시하고 있다.
도 8을 참조하면, UFO 코드 내의 'point' 태그에 'penPair'(제1 속성)이 추가된다. 여기서, 'zNl'과 'zNr'을 통해 2개의 점이 쌍으로 묶이는 것을 확인할 수 있다. 이 때, 'l'은 왼쪽 점을, 'r'은 오른쪽 점을 표현하는 기호이며, 'zN'에서 N의 숫자 값을 이용하여 두 점을 한 쌍으로 연결한다. 즉, 'z1l'와 'z1r'이 하나의 상으로 묶이며, 'z2l'와 'z2r'이 하나의 상으로 묶이며, 'z3l'와 'z3r'이 하나의 상으로 묶이며, 'z4l'와 'z4r'이 하나의 상으로 묶인다.
또한, UFO 코드 내의 'point' 태그에 'innerType'(제2 속성)이 추가된다. 이 때, 자소 'ㅏ'의 외곽선의 내부영역을 채우는 것이므로, 첫번째 'point' 태그 내에 'innerType'가 'fill'로 설정된다.
그리고, UFO 코드 내의 'point' 태그에 ' dependX'(제3 속성)이 추가된다. 일례로, 네번째 'point' 태그에서는 'z3r'가 정의되되, 'z3r'는 미리 위치 좌표가 설정된 점인 'z2r'의 x축 좌표인 'x2r'에 의존하여 그 점의 굵기 변화량만큼 자신의 위치를 옮긴다. 다른 일례로, 일곱번째 'point' 태그에서는 'z3l'이 정의되되, 'z3l'는 미리 위치 좌표가 설정된 점인 'z1r'의 x축 좌표인 'x1r'에 의존하여 그 점의 굵기 변화량만큼 자신의 위치를 옮긴다. 즉, 'z3l'과 'z3r'은 각각 'z1r'과 'z2r'의 x축 좌표에 의존하여 'z1r'과 'z2r'의 x좌표의 변화량만큼 같이 움직여서 직선이 일자 형태를 유지하도록 설정한다.
또한, UFO 코드 내의 'point' 태그에 'serif''(제4 속성)이 추가된다. 즉, 세로획의 양 끝(z1l, z2l)에 세리프를 추가한다. 이 때, 세리프는 출력 폰트 생성부(430)에 생성되는 METAFONT에 의한 폰트의 해당 위치에서 세리프가 표현된다.
한편, 본 발명의 일 실시예에 따르면, 출력 폰트 생성부(430)는 앞서 설명한 바와 같이 중간 코드(MetaUFO)를 파싱하여 획득한 점들의 정보를 이용하여 METAFONT에 의한 폰트를 생성한다. 이 때, 출력 폰트 생성부(430)는 파이썬으로 구현될 수 있으며, 파이썬에서 제공하는 라이브러리인 XML Parser를 이용하여 중간 코드(MetaUFO)를 파싱할 수 있다. 그리고, 출력 폰트 생성부(430)는 파싱을 통해 얻은 데이터를 METAFONT에서 필요한 데이터로 계산하여 METAFONT 코드를 작성한다. 또한, 사용자가 추가한 METAFONT의 속성에 해당하는 함수를 호출하여 추가 처리한다. 그리고 사용자에게 문자의 스타일 변화를 위하여 제공하는 14개의 매개변수를 적용하여 METAFONT 코드를 생성한다. 이 매개변수는 필요에 따라 추가 또는 삭제될 수 있다.
또한, 한글은 로마자와 달리 음절의 구성에 따라 나눠지는 초성, 중성, 그리고 종성을 조합하여 표현된다. 따라서, 출력 폰트 생성부(430)는 파일로 저장된 초성, 중성, 종성에 대해 필요한 자소를 호출하여 문자를 생성할 수 있다. 이를 위해, 출력 폰트 생성부(430)는 파싱을 통해 얻은 데이터를 이용하여, 현재 처리하는 파일이 자소 혹은 자소를 호출하는 문자인지를 판별하고, 그에 따라 해당하는 루틴을 실행할 수 있다.
이 때, 현재 처리하는 파일이 자소를 호출하는 조합형 문자일 경우, 출력 폰트 생성부(430)는 참조하는 자소를 판별하여 해당하는 자소를 호출하는 METAFONT 함수와 함께 각각의 자소에만 적용되는 매개변수를 함께 생성한다. 또한, 출력 폰트 생성부(430)는 문자의 전체 스타일에 영향을 주는 문자의 넓이, 높이, 그리고 기울기 매개변수를 적용하여 코드를 생성한다.
또한, 현재 처리하는 파일이 자소일 경우, 출력 폰트 생성부(430)는 파싱하여 얻은 점의 정보들을 이용하여 문자를 METAFONT로 표현한다. METAFONT로 문자를 표현하기 위하여, 출력 폰트 생성부(430)는 먼저 기준점을 정의하고, 두 개의 점을 묶어놓은 한 쌍에 대해서 굵기를 정한 후, 조절점을 정의한 후 곡선을 그리는 함수를 사용하여 문자를 표현한다. 따라서, 이와 같은 방식으로 파싱하여 얻은 데이터를 이용하여 출력 폰트 생성부(430)는 코드를 작성하고 문자의 영향을 주는 다양한 매개변수를 적용한다.
그리고, 상기에서 언급한 바와 같이, UFO은 문자의 외곽선을 세 가지 방식, 즉 직선, 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선으로 표현한다. 이 때, UFO의 코드 및 중간 코드(MeatUFO)는 Cubic 곡선 및 Quadratic 곡선을 모두 표현할 수 있지만, METAFONT의 코드는 Cubic 곡선만을 표현할 수 있다. 따라서, 본 발명의 출력 폰트 생성부(430)는 아래의 수학식 1을 이용하여 중간 코드(MeatUFO)에서의 Quadratic 곡선을 METAFONT에서의 Cubic 곡선으로 변환하는 코드를 생성할 수 있다.
수학식 1
Figure PCTKR2017002365-appb-M000001
여기서, CP0 및 CP3는 Cubic 곡선을 위한 4개의 점 중 2개의 기준점, CP1 및 CP 2는 Cubic 곡선을 위한 4개의 점 중 2개의 조절점, QP0 및 QP2는 Quadratic 곡선을 위한 3개의 점 중 2개의 기준점, QP1는 Quadratic 곡선을 위한 3개의 점 중 1개의 조절점을 각각 의미한다.
그리고, Quadratic 베지어 곡선은 2차식이므로, 도 9의 (a)에 도시된 바와 같이 시작점 P0과 끝점 P2, 그리고 하나의 조절점인 P1이 필요하다. 더욱 복잡한 곡선은 도 9의 (b)처럼 Quadratic 베지어 곡선 (P0, P1, P2)와 (P2, P3, P4)를 연결하듯이 여러 개의 곡선을 연결하여 표현한다. 또한, 대부분의 폰트 형식에서는 연결된 여러 개의 Quadratic 베지어 곡선을 하나의 곡선처럼 표현한다. 즉, 도 9의 (c) 처럼 연속된 곡선의 두 개의 조절점 사이에 있는 기준점은 생략하여 시작점, 끝점, 그리고 두 개의 조절점으로 표현할 수 있다. 연결된 곡선들은 하나의 기준점을 공유하므로 기준점에 대해 같은 접선의 기울기 값을 가지고 있으므로, 두 곡선을 미분하여 생성된 식에 P2값을 대입하면 같은 값을 가진다. 이 식을 계산하면 P2는 P1과 P3의 중간점임을 알 수 있다. 따라서 도 8의 (c)처럼 연속된 곡선의 두 개의 조절점 사이에 있는 기준점은 생략하여도 곡선을 표현할 수 있다.
본 발명에서는 Quadratic 곡선 방식과 Cubic 곡선 방식으로 표현된 외곽선 폰트의 곡선 표현을 METAFONT로 모두 표현할 수 있도록 Cubic 곡선으로 변환하는 기능을 포함한다. 이러한 동작은 출력 폰트 생성부에(430) 진행한다(단계(530)).
요컨대, 본 발명은 외곽선 폰트의 한 형식인 UFO에 METAFONT 속성을 적용하여 METAFONT 코드를 생성함으로써 새로운 폰트를 생성한다. 기존의 외곽선 폰트는 문자의 굵기나 스타일의 변화에 자유롭지 않으나 METAFONT는 매개변수를 이용하여 스타일을 자유롭게 변형시킬 수 있다. 따라서, 굵기와 같은 스타일의 변화에 따라 여러 벌로 제작되어 제공되어야 했던 외곽선 폰트의 '폰트 패밀리'가 없이도, 기본 외곽선 폰트 하나로 METAFONT 코드를 생성하여 사용자가 조절하는 매개변수에 맞추어 자유롭게 굵기를 조절할 수 있다. 또한 한글의 특성에 맞춰 제공하는 매개변수를 이용하여 다양한 모양의 문자를 생성할 수 있다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (7)

  1. 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서,
    XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및
    상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함하는 것을 특징으로 하는 폰트 생성 방법.
  2. 제1항에 있어서,
    상기 METAFONT를 위한 속성은, 외곽선을 구성하기 위한 상기 점들 중 2개의 점을 쌍으로 지정하기 위한 제1 속성, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 제2 속성을 포함하는 것을 특징으로 하는 폰트 생성 방법.
  3. 제2항에 있어서,
    상기 METAFONT를 위한 속성은, 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 제3 속성 및 점의 세리프를 설정하기 위한 제4 속성 중 적어도 하나를 더 포함하는 것을 특징으로 하는 폰트 생성 방법.
  4. 제3항에 있어서,
    상기 외곽선 폰트는 UFO(Unified Font Object)이고,
    상기 METAFONT를 위한 속성은 상기 UFO의 코드 내의 'point' 태그 내에 포함되는 것을 특징으로 하는 폰트 생성 방법.
  5. 제1항에 있어서,
    상기 외곽선 폰트의 코드 및 상기 중간 코드는 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선을 표현할 수 있고, 상기 METAFONT의 코드는 상기 Cubic 곡선만을 표현할 수 있으며,
    상기 단계 (b)는, 아래의 수학식을 이용하여 상기 중간 코드에서의 Quadratic 곡선을 상기 METAFONT에서의 Cubic 곡선으로 변환하는 것을 특징으로 하는 폰트 생성 방법.
    Figure PCTKR2017002365-appb-I000002
    여기서, CP0 및 CP3는 상기 4개의 점 중 2개의 기준점, CP1 및 CP 2는 상기 4개의 점 중 2개의 조절점, QP0 및 QP2는 상기 3개의 점 중 2개의 기준점, QP1는 상기 3개의 점 중 1개의 조절점을 각각 의미함.
  6. 제1항 내지 제5항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  7. METAFONT에 의한 폰트를 생성하는 장치에 있어서,
    XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 중간 코드 생성부; 및
    상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 출력 폰트 생성부;를 포함하는 것을 특징으로 하는 폰트 생성 장치.
PCT/KR2017/002365 2017-01-26 2017-03-06 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 WO2018139700A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201780042717.4A CN109478200B (zh) 2017-01-26 2017-03-06 利用外廓线字体的通过元字形生成字体的装置及方法
JP2019521360A JP2019528485A (ja) 2017-01-26 2017-03-06 フォントの生成方法及びその方法を記録した記録媒体並びにフォントの生成装置
US16/305,486 US11036917B2 (en) 2017-01-26 2017-03-06 Apparatus and method for generating font by means of metafont by using outline font

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0012703 2017-01-26
KR1020170012703A KR101905300B1 (ko) 2017-01-26 2017-01-26 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법

Publications (1)

Publication Number Publication Date
WO2018139700A1 true WO2018139700A1 (ko) 2018-08-02

Family

ID=62979363

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2017/002365 WO2018139700A1 (ko) 2017-01-26 2017-03-06 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법

Country Status (5)

Country Link
US (1) US11036917B2 (ko)
JP (1) JP2019528485A (ko)
KR (1) KR101905300B1 (ko)
CN (1) CN109478200B (ko)
WO (1) WO2018139700A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11651140B2 (en) * 2019-12-09 2023-05-16 Foundation Of Soongsil University Industry Cooperation Font generating device and method for changing partial character style

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443466B2 (en) * 2020-08-05 2022-09-13 Kyocera Document Solutions Inc. Image forming apparatus that randomly processes outline data in association with a character code to render a character in different forms, image forming method including randomly processing outline data in association with a character code to render a character in different forms, and non-transitory computer readable recording medium that records an information processing program that realizes the image forming method including randomly processing outline data in association with a character code to render a character in different forms

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030043151A1 (en) * 2001-07-12 2003-03-06 Jae Young Choi Method for lossy optimization and storage of font
KR20040085659A (ko) * 2003-04-01 2004-10-08 삼성전자주식회사 벡터 폰트 생성방법 및 장치
KR101342730B1 (ko) * 2013-08-07 2013-12-19 (주)정글시스템 폰트의 굵기를 가변적으로 제어하는 시스템 및 방법
KR20160133271A (ko) * 2015-05-12 2016-11-22 주식회사 윤디자인그룹 아트 폰트를 생성하기 위한 방법, 장치 및 이를 수행하는 프로그램

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3021547B2 (ja) * 1989-09-29 2000-03-15 セイコーエプソン株式会社 文字パターン発生方法
US7821515B2 (en) * 2007-06-27 2010-10-26 Monotype Imaging Inc. Method for automatic font character height restriction
JP2010111088A (ja) * 2008-11-10 2010-05-20 Seiko Epson Corp 画像形成装置
JP5335392B2 (ja) * 2008-12-05 2013-11-06 キヤノン株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US20130155098A1 (en) * 2011-12-19 2013-06-20 Monotype Imaging Inc. Adjusting Fonts for Visual Consistency
US20140362104A1 (en) * 2013-06-11 2014-12-11 Microsoft Corporation Layered z-order and hinted color fonts with dynamic palettes
US10019415B1 (en) * 2015-08-28 2018-07-10 Animoto Inc. System and method for consistent cross-platform text layout
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030043151A1 (en) * 2001-07-12 2003-03-06 Jae Young Choi Method for lossy optimization and storage of font
KR20040085659A (ko) * 2003-04-01 2004-10-08 삼성전자주식회사 벡터 폰트 생성방법 및 장치
KR101342730B1 (ko) * 2013-08-07 2013-12-19 (주)정글시스템 폰트의 굵기를 가변적으로 제어하는 시스템 및 방법
KR20160133271A (ko) * 2015-05-12 2016-11-22 주식회사 윤디자인그룹 아트 폰트를 생성하기 위한 방법, 장치 및 이를 수행하는 프로그램

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GWON, GYEONG JAE ET AL: "Structure Korean Font Generator Using METAFONT", KIISE TRANSACTIONS ON COMPUTING PRACTICES, vol. 22, no. 9, 22 September 2016 (2016-09-22), pages 449 - 454, XP055534678, ISSN: 2383-6326 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11651140B2 (en) * 2019-12-09 2023-05-16 Foundation Of Soongsil University Industry Cooperation Font generating device and method for changing partial character style

Also Published As

Publication number Publication date
KR20180088087A (ko) 2018-08-03
US20200327276A1 (en) 2020-10-15
CN109478200B (zh) 2023-08-04
KR101905300B1 (ko) 2018-10-05
JP2019528485A (ja) 2019-10-10
US11036917B2 (en) 2021-06-15
CN109478200A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
Furuta et al. Interactively editing structured documents
Salomon The Advanced TEXbook
André et al. Structured documents
CN103136769B (zh) 用户书写风格字体生成的方法和装置
CN108710601B (zh) 一种文本显示方法及其设备、存储介质、电子设备
CN110263281B (zh) 一种数据可视化开发中页面分辨率自适应的装置及方法
WO2018139700A1 (ko) 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법
CN107438194A (zh) 一种智能电视ui对象绘制方法及智能电视
CN113867694B (zh) 一种智能生成前端代码的方法和系统
Bagley et al. Creating reusable well-structured PDF as a sequence of component object graphic (COG) elements
JPH04148475A (ja) 文書処理方法及び装置
JPH04128970A (ja) 文書処理システム
Neumann et al. Time for SVG—towards high quality interactive web-maps
US5689723A (en) Method for allowing single-byte character set and double-byte character set fonts in a double-byte character set code page
CN106776527A (zh) 电子书数据的显示方法、装置及终端设备
CN110275996B (zh) 数据可视化开发为内容开发提供页面框架的装置及方法
WO2012165830A2 (ko) 전자 문서 표시 방법 및 시스템
CN105487684B (zh) 拼音汉字字符的输出方法和拼音汉字字符的输出装置
CN101464782B (zh) 版面描述信息的转换方法及应用版面描述的装置
Pavazza et al. The alternative way of creating infographics using SVG technology
CN111061980A (zh) 一种基于bfc特性的自适应布局方法
JPH09212630A (ja) 図形作成装置
CN112445474B (zh) 长文本文件名的显示方法、存储介质
Raymond Making Pictures With GNU PIC
JP2021092771A (ja) 部分文字スタイル変更が可能なフォント生成装置および方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17894212

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019521360

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17894212

Country of ref document: EP

Kind code of ref document: A1