KR100923572B1 - 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR100923572B1
KR100923572B1 KR1020070059818A KR20070059818A KR100923572B1 KR 100923572 B1 KR100923572 B1 KR 100923572B1 KR 1020070059818 A KR1020070059818 A KR 1020070059818A KR 20070059818 A KR20070059818 A KR 20070059818A KR 100923572 B1 KR100923572 B1 KR 100923572B1
Authority
KR
South Korea
Prior art keywords
font
screen
vector
delete delete
stem
Prior art date
Application number
KR1020070059818A
Other languages
English (en)
Other versions
KR20080111634A (ko
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 KR1020070059818A priority Critical patent/KR100923572B1/ko
Publication of KR20080111634A publication Critical patent/KR20080111634A/ko
Application granted granted Critical
Publication of KR100923572B1 publication Critical patent/KR100923572B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation

Abstract

한 벌의 폰트 세트를 이루는 각 글자에 관한 구조틀로서, 상기 구조틀을 분할하는 유닛의 개수가 상기 글자에 대한 픽셀과 포인트의 비율이 정수가 되도록 결정되는 폰트의 구조틀이 개시된다.
본 발명에 의한 폰트의 구조틀, 벡터스크린폰트파일, 벡터스크린폰트파일의 생성방법 및 벡터스크린폰트파일이 저장된 기록매체를 이용하면, 기존 어도비사나 MS사의 구조틀의 문제점이 해소됨으로써 한글, 한자, 일어 등 글자의 형태가 복잡하고 획수가 많은 문자에 대해서도 힌팅 기법을 적용할 수 있게 되고, 가독성 뛰어난 폰트를 얻을 수 있게 되는 효과가 있다.
폰트, 서체, 비트맵, 윤곽선, 아웃라인, 래디컬, 글립, 힌팅

Description

폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체{COMPUTER-READABLE MEDIA CONTAINING FONT CREATING PROGRAM}
도 1은 어도비사(社) 폰트의 1000UPM 구조틀의 일례를 나타낸 도면,
도 2는 마이크로소프트사(社)의 1024UPM 구조틀의 일례를 나타낸 도면,
도 3은 본 발명에 의한 폰트의 구조틀의 일례를 나타낸 도면,
도 4는 본 발명에 의한 폰트의 구조틀의 다른 예를 나타낸 도면,
도 5a는 본 발명에 의한 구조틀을 적용한 벡터스크린폰트의 일례를 나타낸 도면,
도 5b는 본 발명에 의한 구조틀을 적용한 벡터스크린폰트의 다른 예를 나타낸 도면,
도 6은 VTT 프로그램을 통하여 힌팅정보가 입력되는 과정의 일례를 나타낸 도면,
도 7은 본 발명에 의한 구조틀을 적용한 벡터스크린폰트파일의 생성방법의 일례를 나타낸 흐름도이다.
본 발명은 폰트의 구조틀, 벡터스크린폰트파일, 벡터스크린폰트파일의 생성방법 및 벡터스크린폰트파일을 저장한 기록매체에 관한 것으로서, 보다 상세하게는 가독성이 한층 향상된 컴퓨터 화면 상의 스크린폰트를 제공하기 위한 폰트의 구조틀, 벡터스크린폰트, 벡터스크린폰트의 출력방법 및 벡터스크린폰트파일을 저장한 기록매체에 관한 것이다.
스크린 폰트란 모니터 스크린에서 제대로 보이는 폰트(서체)를 말한다.
현재 널리 사용되고 있는 컴퓨터 모니터의 스크린 해상도는, SVGA 그래픽카드에 의한 경우 96dpi(dot per inch:인치당 도트 수)이고, VGA 그래픽카드에 의한 경우에는 그보다 한 단계 낮은 72dpi에 해당한다. 이는, 수 백~수 천dpi에 이르는 종이인쇄물의 해상도에 비해서 현저히 낮은 수치이다.
이처럼 낮은 해상도에서 선명한 스크린 폰트를 제공하기 위하여, 종래 기술에서는 비트맵 폰트를 사용하여 왔다.
그러나, 문자들을 비트맵으로 저장하기 위해서는, 각 폰트에 포함되는 문자들(한글의 경우에는 수 천여 자)을 다양한 크기(포인트)별로 일일이 저장하여야 하므로 컴퓨터의 리소스를 지나치게 점유하는 문제점이 있었다.
뿐만 아니라 사각점(도트-픽셀)으로 표시되는 비트의 특성으로 고딕체(돋움, 굴림 등)에서는 웬만큼 글꼴의 구현이 가능하나 명조형식(영문 세리프 등)의 바탕체는 글꼴자체의 조형미를 제대로 나타낼 수 없게 된다.
가령, 한글 윈도우용 기본 폰트로 되어 있는 바탕체와 굴림체는 8,9,10,11,12,13,14,15,16,18포인트에 해당하는 크기의 폰트는 비트맵 폰트로 폰트파일 내에 저장되어 있어서, 바탕체 폰트파일의 크기가 15,5MB, 굴림체 폰트파일의 크기는 12.7MB에 이르는 등 파일의 크기가 매우 크다. 이에 따라, 하드디스크 공간은 물론이거니와, 컴퓨터의 메모리 공간 또한 많이 점유함으로써 컴퓨터의 전반적인 성능이 저하되는 문제점을 초래하였다.
이러한 점을 해결하기 위하여 벡터폰트가 그리고 비트에 대응되는 사각점인도트로 영문 세리프체, 한글과 한자의 명조체를 구현하기 위하여 스크린폰트로 가공하는 기술인 힌팅기법이 개발되었다. 이러한 2가지 기술의 결합으로 제작된 폰트를 벡터스크린폰트라 한다.
벡터스크린폰트는 폰트의 크기마다 대응되는 개개의 비트맵을 별도로 저장할 필요가 없이, 문자의 모양을 윤곽선의 벡터(방향, 길이)로 기억시킨 폰트를 말한다.
벡터스크린폰트는 윤곽선의 벡터값에 따라 문자를 비트맵 이미지로 변환(래스터라이즈:rasterize)하여 출력하게 된다. 그런데, 앞서 말한 모니터 스크린의 낮은 해상도로 인하여 일정 크기 이하에서는 계단현상과 반올림 오차가 발생하는 문제점이 있었다.
먼저, 계단현상이라 함은, 모니터 스크린에 출력되는 문자의 곡선 부분에서는 선이 매끄럽지 못하고 마치 계단처럼 울퉁불퉁한 모습을 가지게 되는 현상(픽셀이 사각점이기 때문에)을 말한다.
스크린 해상도를 72dpi로 가정했을 때, 본문 글자의 크기로 널리 쓰이는 10 포인트 글자는 모니터 스크린에서 (10픽셀 × 10픽셀) 크기를 차지하게 되므로, 글자를 이루는 점(도트) 하나가 글자 크기의 10%나 되어, 곡선 및 사선 부분에서 이러한 계단 현상이 쉽게 눈에 뜨인다. 따라서 가독성도 떨어지거니와 보기에도 좋지 않아지는 문제점이 발생한다.
다음으로, 반올림 오차라 함은, 모니터 스크린처럼 지정된 좌표에 점(도트)을 찍는 방식을 가진 출력 장치에서 소수점 이하의 좌표값을 가질 수 없음에 따라 발생하는 오차를 말한다.
가령, 모니터 스크린에 문자를 출력함에 있어서, 좌표(0.05,0.03)과 같은 것은 존재하지 않으며, 좌표(0,0)의 바로 오른쪽에 있는 점은 좌표(1,0)이 된다. 이때, 72dpi의 해상도를 갖는 모니터 스크린과 같이 해상도가 낮은 장치에서 한글의 "를"을 표시하기 위해서는 세로 좌표값이 적어도 15개가 필요한데, 10포인트의 글자는 10개의 세로 좌표값만을 가지므로, 결국 10포인트로는 이 글자를 표시할 수 없는 문제점이 발생한다.
반올림 오차의 다른 문제점으로서, 어떠한 글자를 10포인트로 표시하도록 할 때 가로획 하나가 0.5포인트의 두께를 갖는다면, 이 획을 스크린 상에서 어떻게 처리하여야 할 지가 문제가 된다. 즉, 소수점을 올림하여 1픽셀, 곧 1포인트 두께가 되게 하거나, 소수점을 버림하여 0픽셀, 곧 화면에 표시되지 않게 하는 2가지 선택이 존재하는데, 전자를 선택한다면 두께가 2배가 됨으로써 모양이 나빠지거나 인접한 다른 획과 붙어 획과 획의 간격이 없어질 수 있으며, 후자를 선택한다면 획이 사라지는 결과를 낳게 되는 문제점이 있다.
이렇게 계단현상과 반올림 오차에 의한 획의 표현을 개선하기 위한 방법으로서 힌팅(hinting) 기법이 등장하였다.
힌팅 기법은, 글자에 대하여 몇 가지 명령이나 정보를 덧붙여 특정한 크기나 모양에 대하여 변화를 줄 수 있도록 함으로써, 크기가 작은 글자들을 저해상도의 모니터 스크린에 표시할 때에 상황에 맞도록 픽셀의 위치를 재배열하거나 조정함으로써 글자의 모양을 교정하여 가독성을 향상시키는 기법이다.
그러나, 종래의 힌팅 기법은 문자가 단순하고 획 수가 적은 알파벳을 기준으로 하여 개발된 것이기 때문에, 동북아시아권 문자(2바이트의 한글, 한자, 일본어 등)에 대해서 종래의 힌팅 기법을 적용하는 경우에는 오히려 글자를 거칠게 하거나 뭉개버림으로써 가독성을 떨어뜨리는 결과를 낳는 문제점이 있었다.
따라서, 동북아시아권 문자(2바이트의 한글, 한자, 일본어 등)와 같이 글자의 형태가 복잡하고 획수가 많은 문자에 대해서는 힌팅 기법을 적용할 수조차 없었던 바, 이러한 문자에 대해서도 힌팅을 적용할 수 있도록 하는 벡터스크린폰트 및 그 출력방법의 발명에 관한 요청이 제기되어 왔다.
본 발명은 상기와 같은 요청에 부응하여 착안된 것으로서, 글자의 형태가 복잡하고 획수가 많은 문자에 대해서도 힌팅 기법을 적용할 수 있도록 하는 폰트의 구조틀, 벡터스크린폰트파일, 벡터스크린폰트파일의 생성방법 및 벡터스크린폰트파일이 저장된 기록매체를 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여 본 발명에 의한 폰트의 구조틀은, 한 벌의 폰트 세트를 이루는 각 글자에 관하여, 상기 글자에 대한 전각과 스템의 비율이 정수가 되도록 상기 구조틀을 분할하는 유닛의 개수가 결정된다.
유닛의 개수는 추후 스크린폰트로 완성하기 위한 힌팅작업의 가능성까지를 감안하여 각 글자에 대한 원도를 작성하는 과정에서 결정된다.
이 때, 상기 유닛의 개수가 2 및 3을 약수로 포함하는 것이 바람직하다.
또한, 상기 유닛의 개수가 5를 약수로 더 포함하는 것이 더욱 바람직하다.
본 발명의 다른 특징에 의한 벡터스크린폰트파일은, 한 벌의 폰트 세트를 이루는 각 글자에 관한 벡터정보 및 상기 각 글자에 대한 힌팅정보를 포함하며, 상기 글자에 관한 전각과 스템의 비율이 특정 정수(16)가 되도록 이루어진다.
본 발명의 또 다른 특징에 의한 벡터스크린폰트파일의 생성방법은, 폰트의 구조틀을 분할하는 유닛의 개수가 결정되는 단계 및 한 벌의 상기 폰트 세트를 이루는 각 글자에 관한 벡터정보가 입력되는 단계를 포함하여 이루어진다.
본 발명의 또 다른 특징에 의한 벡터스크린폰트파일이 저장된 기록매체에는, 한 벌의 폰트 세트를 이루는 각 글자에 관한 벡터정보 및 상기 각 글자에 대한 힌팅정보를 포함하며, 상기 글자에 관한 전각과 스템의 비율이 정수가 되도록 상기 글자에 관한 구조틀을 분할하는 유닛의 개수가 결정되는 벡터스크린폰트파일이 저장된다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상 세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 본 발명의 실시예에 따른 폰트의 구조틀, 벡터스크린폰트, 벡터스크린폰트의 출력방법 및 벡터스크린폰트파일을 저장한 기록매체에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 1은 어도비사(社) 폰트의 1000UPM 구조틀의 일례, 도 2는 마이크로소프트사(社)(이하 "MS사"라 한다)의 1024UPM 구조틀의 일례를 나타낸 도면이다.
폰트를 만드는 구조틀이라 함은, 폰트의 원도(原圖)를 만드는 바탕을 말한다.
폰트의 구조틀에 있어서, 세로의 높이를 1이라고 했을 때, 가로의 너비가 1이 되는 정사각형의 모양을 정각, 전각 또는 EM 사이즈("엠 사이즈"라고 읽는다)라고 한다. 또한, 이 정각을 격자형태로 다시 세밀하게 동일 간격으로 나눈 최소값을 유닛(unit)이라 한다. 가령, 정각이 12개로 나뉘면 12유닛 폰트 또는 12UPM(Unit Per EM:EM 당 유닛의 수) 폰트가 되며, 16개로 나뉘면 16유닛 폰트 또는 16UPM 폰트가 된다.
폰트를 이루는 개개의 문자는 이러한 구조틀의 격자 내에서 가로,세로의 획이 표현되게 된다.
도 1은 어도비사 폰트의 1000UPM 구조틀의 일례를 나타낸 도면이다.
어도비사는 1000dpi이상의 고해상도로 프린트되는 고급인쇄를 위한 윤곽선 형식의 폰트를 개발하였는데, 도 1에서 나타낸 바와 같이, 어도비사에서 폰트의 구조틀로 채택한 것은 1000UPM이다.
즉, 구조틀은 가로, 세로 각각 1000개의 유닛으로 이루어지는 격자로 나뉘며, 모니터 스크린에 문자가 출력되기 위하여 래스터라이즈될 때에도 이를 기준으로 하여 글자의 조판을 조정하도록 되어 있다.
한편, 도 2는 MS사의 1024UPM 구조틀의 일례를 나타낸 도면이다.
어도비사가 1000UPM의 폰트 구조틀을 사용하는 것에 반하여, 애플사(社)와 MS사가 개발한 윤곽선 형식의 폰트인 트루타입폰트(TTF:True Type Font)에서는 폰트의 구조틀을 1024유닛 또는 2048유닛이 되도록 하고 있다.
MS사가 주장하는 1024UPM 또는 2048UPM을 사용하는 근본적인 이유는 힌팅의 용이성 때문이라고 알려져 있다.
즉, MS사에 따르면, 컴퓨터 프로그램이 근본적으로 2진법을 사용하므로, 10진법에 의거한 어도비사의 1000UPM 구조틀보다 2진법에 의거한 1024UPM 또는 2048UPM의 구조틀이 연산도 용이하고 오차도 적게 발생하므로 1000UPM 구조틀보다 1024UPM 구조틀이 바람직하다는 것이다.
그러나, MS사의 1024UPM 또는 2048UPM 구조틀에서도 앞서 언급한 반올림 오차의 문제점은 여전하다.
즉, 1024UPM 구조틀의 문제점은, 해상도의 단위가 본질적으로 12진법에 의거하는 인치법을 따른다는 점에 기인한다.
다시 말해, 해상도를 나타내는 단위인 dpi(dot per inch)는 인치 당 들어가는 점의 개수를 말하는데. 그런데, 1인치는 72포인트이므로, 가령 72dpi의 해상도를 가지는 모니터에서는 1인치의 길이가 72개의 도트(혹은 픽셀:pixel)로 이루어지게 된다.
따라서 이 경우에, 아래 수학식 1과 같은 관계가 성립한다.
(1포인트) = (1픽셀)
모니터의 해상도는 이처럼 영미식의 길이 단위인 인치법에 따라 대체로 12의 배수로 늘어나며 개발되고 있으며, 현재 가장 대중적으로 사용되는 모니터의 해상도는 96dpi이다.
이에 따르면, 픽셀과 포인트 간 관계는 수학식 2와 같다.
(1포인트) = (1.3333…픽셀)
그런데, 픽셀은 물리적인 하나의 점이므로 항상 정수, 특히 자연수의 값을 가져야만 한다. 그러므로 MS사의 1024UPM 구조틀에 의거한 스크린폰트의 경우에는 1포인트에 대응되는 1픽셀의 값에 소수부분 만큼의 오차가 발생할 수밖에 없다.
이러한 오차를 감안하여 국제표준에서는 다음 표 1과 같이 정해져 있다.
포인트 5 8 9 10 11 12 13 14 15 16 17 18 19 20
픽셀 7 11 12 13 15 16 17 19 20 21 23 24 25 27
글자를 이루는 획을 스템(stem)이라고도 하는데, 영어로 대표되는 알파벳 문자의 경우에는 문자의 형상이 단순하여, 스템이 아무리 많은 경우에라도 M,m,W,w에서와 같이 세로의 경우 3에 지나지 않는다.
또한, 영문자의 스템의 굵기는 1000UPM 폰트의 경우에 약 80UPM, 2048UPM 폰트의 경우에 약 170UPM이 된다.
한편, 영문 알파벳 중 가장 복잡한 문자인 M을 표기하기 위하여 필요한 최소의 가로 픽셀의 개수는 수학식 3과 같다.
(최소 픽셀의 수) = (스템의 수)×2 + 1 = 3 × 2 + 1 = 7 (개)
보통 서체 원도를 디자인할 때 해당 글꼴의 기준 사이즈(포인트)를 정하고 동 사이즈에서 글꼴들이 충분히 표현될 수 있도록 전각과 스템의 굵기를 결정하게 된다. 가령, 상기 어도비사의 예에서 EM=1000UPM과 STEM=80UPM 처럼 정하게 되고 이때 스템의 굵기를 약 1/12EM이라고도 하게 된다.
표 1에 따르면 96dpi에서 14포인트는 19픽셀의 크기에 해당하고, 19ppem(pixel per em:전각을 이루는 픽셀의 수로 나타낸 글자의 크기) 글자가 되며, 이때 1픽셀은 1/19 EM이 된다. 이는 글자 원도의 스템 굵기를 1/12 EM이라 했을 때 기준인 9포인트(12픽셀)보다 19/12배로 더 굵어지는 셈이 된다.
이로 인하여 발생하는 문제점은 글자 모양의 왜곡이다.
예를 들어, 아리얼(Ariel) 서체의 14포인트의 스템 굵기는 2픽셀로 표현된다.
본래 스템의 굵기가 1/12EM일 때에 9포인트(12픽셀)에서 1픽셀로 표현되므로, 14포인트는 1.55픽셀로 표현되어야 한다. 그러나 앞서 언급한 반올림 효과로 인하여, 1.55픽셀을 표현할 방법이 없는 까닭으로 불가피하게 2픽셀로 대신 표현하게 된다. 결국 14∼18포인트까지는 2픽셀로 표현되어, 같은 폰트 내에서 포인트가 변함에 따른 스템 굵기의 변동이 일치되지 않는 글자 모양의 왜곡이 발생한다.
도 1 및 도 2는 이러한 글자 모양의 왜곡을 나타내고 있다.
즉, 도 1 및 도 2의 종래 기술에 의한 구조틀에서는 포인트와 픽셀의 비율이 정수로 나누어 떨어지지 않으므로(1000/80, 혹은 1024/80 등), 글자 "m"의 스템이 격자에서 떨어진 곳에 위치하게 되므로, 스템의 윤곽선이 격자에 위치하도록 인위적으로 조절하는 과정에서 스템의 굵기가 본래의 글자 모양보다 굵거나 가늘어지는 왜곡이 발생한다.
도 3은 본 발명에 의한 폰트의 구조틀의 일례를 나타낸 도면이다.
본 발명에 의한 폰트의 구조틀의 특징은, 10진법이나 2진법에 의거하는 종래의 구조틀에서 발생하는 오차를 제거하기 위하여, 엠사이즈를 스템사이즈의 정수배 수로 정해지도록 유닛의 개수를 설정한다는 점에 있다.
또한 스크린 해상도는 12진법을 따르는 인치법에 의거하므로, 기준사이즈(본발명에서는 12포인트-16픽셀)의 스템값을 정함에 있어 보통 한글 원도의 경우 55-63UPM정도임을 감안, 12의 배수인 60으로 한다.
따라서 자연히 EM=960(60*16)이 되어 공히 12의 약수인 2와 3을 동시에 약수로 포함하게 한다.
또한, 스크린 해상도가 10진법을 기초로 하여 10의 배수만큼 증가하는 경우를 반영하기 위하여, 유닛의 개수는 5를 약수로 포함하도록 할 수 있다.
따라서, 도 3에서 유닛의 개수를 U라고 한다면, 유닛의 개수는 아래 수학식 4와 같이 표현된다.
U = 2l×3m×5n-1 (l, m, n은 자연수)
도 3에서 확인할 수 있듯이, 본 발명에 의한 폰트의 구조틀을 사용하는 경우에는 정각사이즈와 스템사이즈의 비율이 정수로 나누어 떨어지므로 글자의 스템이 유닛과 유닛 간의 경계에 꼭 맞게 위치하게 된다. 따라서 스템의 굵기를 인위적으로 조절하지 않아도 되므로 글자 모양의 왜곡도 발생치 않는다.
도 4는 본 발명에 의한 폰트의 구조틀의 다른 예를 나타낸 도면이다.
도 4에서는 도 3의 구조틀 중에서도 특히 정각을 분할하는 유닛의 개수가960개가 되도록 하는 경우, 즉 960UPM 폰트의 예를 나타내고 있다.
960UPM 폰트는 어도비사의 1000UPM 구조틀에서와 비슷한 유닛 수로 정각을 분할하고 있으면서도, 스크린 해상도의 기초가 되는 12라는 수의 정수배(=80배)에 해당한다.
한편, 960 = 12 × 80 = (2²× 3) × (2⁴× 5)가 되어, 960의 약수가 12의 약수인 2와 3을 모두 포함하고 있음을 확인할 수 있다.
즉, 위 수학식 4에서 l=6, m=1, n=2인 경우에 해당한다.
따라서, 모니터에서 정수의 픽셀을 가지도록 제대로 보여지는 문자를 만들고자 한다면, 그 폰트의 구조틀을 960UPM으로 할 수 있고, 이 때의 스템의 굵기는 30,36,48,60,75,84,90,120유닛 등이 된다.
마찬가지로, 구조틀을 1200UPM으로 구성할 수도 있는데, 이 경우 스템의 굵기는 75유닛이 되도록 할 수 있다. 스템의 굵기가 75유닛, 60유닛 중 어느 것이 되더라도 어도비사나 MS사의 구조틀의 문제점으로 인한 픽셀수의 반올림효과에 따른 왜곡은 발생하지 않게 된다.
마찬가지로, 만약 스템의 굵기가 12의 약수인 2와 3을 모두 포함하는 30유닛이 되도록 구조틀의 유닛수를 960 또는 480 등으로 설정한다면, 정각사이즈/스템사이즈의 값이 정수로 맞아 떨어지도록 할 수 있게 된다.
도 5a는 본 발명에 의한 구조틀을 적용한 벡터스크린폰트의 일례를 나타낸 도면이다.
도 5a에서 예시한 스크린폰트는 전각이 960이면서 16ppem인 스크린폰트이다. (즉, 960 / 16 = 60)
따라서, 글자의 스템(501)이 60유닛인 경우라면, 12포인트(16픽셀)에서 이 글자의 스템(501)은 정확히 1픽셀이 된다. 이런 굵기의 표현은 100%의 블랙으로 나타낼 수 있다.
즉, '가'의 중성인 'ㅏ'의 세로기둥을 정확히 1픽셀의 굵기를 가지는 100% 흑색으로 나타낼 수 있는 것이다.
도 5b는 본 발명에 의한 구조틀을 적용한 벡터스크린폰트의 다른 예를 나타낸 도면이다.
도 5b에서 예시한 스크린폰트는 전각이 20ppem인 스크린폰트이다.
이 경우, 960UPM에서는 1픽셀이 48유닛을 가진다.
(즉, 960 / 20 = 48)
따라서, 글자의 스템(502)이 60유닛인 경우라면, 이 글자의 스템(502)은 1.25 픽셀이 된다. (60 / 48 = 1.25)
0.25의 픽셀을 나타내기 위한 방법은 하나의 픽셀의 명도 0%를 백색, 100%를 흑색이라고 하였을 때 25%의 회색(gray)(503)으로 나타내는 것이다.
따라서, 도 5b의 경우에 있어서 'ㅏ'의 세로기둥(502)은 100%의 블랙 1픽셀과 25%의 회색 1픽셀(503)을 사용함으로써 온전히 표현할 수 있게 된다.
스크린폰트의 명도는 16 계조의 그레이로 표현되므로, 본 발명에 의한 구조틀을 적용한 스크린폰트에서 0.25픽셀은 부족함도, 남음도 없이 정확히 1/4 값의 회색으로 표현된다.
도 6은 VTT 프로그램을 통하여 힌팅정보가 입력되는 과정의 일례를 나타낸 도면이다.
힌팅 작업은 대표적으로 MS사의 비주얼 트루 타입(VTT:Visual True Type)이라고 불리는 폰트 작성 및 힌팅 작업 수행 프로그램에 의하여 이루어지는데, 이 VTT 프로그램을 통하여 벡터스크린폰트파일 내의 각 글자에 대한 힌팅정보가 입력된다.
도 6에서 나타낸 바와 같이, 시각적인 인터페이스를 통하여 입력된 힌팅정보는 VTT 프로그램을 통하여 해당 글자에 대한 힌팅정보 수치로 변환이 되어 벡터스크린폰트파일 내에 저장이 된다.
VTT 프로그램의 동작에 관한 상세한 설명 및 VTT 프로그램을 이용한 힌팅작업의 수행방법은 당업자에게 자명한 사항이므로 여기에서는 그 설명을 생략하기로 한다.
한편, 반드시 VTT 프로그램이 아니더라도, 폰트를 작성하고 힌팅 작업을 수행할 수 있는 프로그램이라면 본 발명에 의한 벡터스크린폰트파일의 생성에 적용할 수 있다.
도 7은 본 발명에 의한 구조틀을 적용한 벡터스크린폰트파일의 생성방법의 일례를 나타낸 흐름도이다.
도 7에서 나타낸 바와 같이, 폰트 작성 및 힌팅 프로그램을 통하여 이루어지는 본 발명에 의한 벡터스크린폰트파일의 생성방법은, 폰트의 구조틀을 분할하는 유닛의 개수가 결정되는 단계(S100)와 한 벌의 폰트 세트를 이루는 각 글자에 관한 벡 터정보가 입력되는 단계(S200)를 포함하여 이루어진다. 또한, 한 벌의 폰트 세트를 이루는 각 글자에 관한 힌팅정보가 입력되는 단계(S300)를 더 포함하여 이루어질 수도 있으며, 입력된 벡터정보 및 힌팅정보가 저장되는 단계(S400)를 더 포함하여 이루어질 수도 있다.
S100 단계에서 결정되는 유닛의 개수는 각 글자에 관한 정각과 스템의 비율이 정수가 되도록 결정되는데, 이 때, 유닛의 개수의 약수에는 2와 3이 포함된다.
가령 구조틀이 960UPM인 폰트의 경우에 글자의 스템의 굵기는 60유닛이 된다.
마찬가지로, 구조틀이 1200UPM인 폰트의 경우, 글자의 스템의 굵기는 60유닛이 되거나 75유닛이 되고, 두 경우 모두 정각과 스템의 비율이 정수로 떨어지게 된다.
S200 단계에서는 각 글자에 관한 벡터정보(크기, 위치)가 입력됨으로써, OS에 의하여 특정 글자에 관한 출력명령이 수행되는 경우에, 올바른 크기와 위치에서 글자가 표현될 수 있도록 한다.
S300 단계에서는 GASP 작업(Grid-fitting And Scan-conversion Precedure)이 함께 수행될 수도 있다.
GAST 작업이란, 해당 폰트를 어느 크기까지는 비트맵과 같은 스케일러블비트로 출력시킬 것이며, 어느 크기부터는 그레이스케일로 래스터라이즈해줄 것인지를 결정하는 것이다.
이에 따라 몇 포인트의 크기에서 한 픽셀을 흑과 백만으로 표시할 것인지(이것을 grid-fitting이라 한다), 그레이스케일과 그리드피팅을 섞어서 할 것인지를 결정하게 된다.
예컨대, MS 윈도우의 기본폰트인 굴림은 10픽셀 이하의 글자에서는 그레이스케일로만, 11 내지 24픽셀까지는 그리드피팅으로만, 25픽셀 이상의 글자에서는 그리드피트와 그레이스케일이 함께 출력되도록 GASP가 설정된다.
경우에 따라서는 본 발명에 의한 벡터스크린폰트파일의 생성방법에 의하여 생성되는 벡터스크린폰트파일에 대해서도 이러한 GASP 설정값을 입력하도록 할 수 있다.
다음 S400 단계에서는 폰트 작성 및 힌팅 작업 수행 프로그램을 통하여 입력된 벡터정보와 힌팅정보가 벡터스크린폰트파일에 저장되도록 하는 절차가 수행된다.
본 발명의 실시예는 위에서 언급한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
또한, 이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
이상에서 설명한 바와 같은 본 발명에 의한 폰트의 구조틀, 벡터스크린폰트파일, 벡터스크린폰트파일의 생성방법 및 벡터스크린폰트파일이 저장된 기록매체를 이용하면, 기존 어도비사나 MS사의 구조틀의 문제점이 해소됨으로써 한글, 한자, 일어 등 글자의 형태가 복잡하고 획수가 많은 문자에 대해서도 힌팅 기법을 적용할 수 있게 되고, 가독성 뛰어난 폰트를 얻을 수 있게 되는 효과가 있다.

Claims (14)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 한 벌의 폰트 세트를 이루는 각 글자에 관한 벡터정보가 입력되는 기능;
    상기 각 글자에 관하여 힌팅정보가 입력되는 기능; 및
    상기 각 글자에 관한 상기 벡터정보 및 상기 힌팅정보가 저장되는 기능이 포함된 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체로서,
    상기 폰트 작성 프로그램에서 상기 한 벌의 폰트 세트를 이루는 각 글자의 원도를 만들기 위한 구조틀을 이루는 유닛의 개수는, 스템의 굵기-상기 스템은 글자를 이루는 획임-의 배수임과 동시에 3의 배수이도록 설정되는 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  14. 제13항에 있어서,
    인치 당 96 도트의 모니터 환경에서 상기 구조틀에 포함되는 상기 유닛의 개수는 960개로 설정되는 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
KR1020070059818A 2007-06-19 2007-06-19 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 KR100923572B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070059818A KR100923572B1 (ko) 2007-06-19 2007-06-19 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070059818A KR100923572B1 (ko) 2007-06-19 2007-06-19 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020090058412A Division KR20090080931A (ko) 2009-06-29 2009-06-29 벡터 스크린 폰트 파일의 생성방법

Publications (2)

Publication Number Publication Date
KR20080111634A KR20080111634A (ko) 2008-12-24
KR100923572B1 true KR100923572B1 (ko) 2009-10-27

Family

ID=40369731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070059818A KR100923572B1 (ko) 2007-06-19 2007-06-19 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Country Status (1)

Country Link
KR (1) KR100923572B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070011664A (ko) * 2005-07-21 2007-01-25 (주)정글시스템 스냅 힌팅과 스템 힌팅을 사용한 외곽선 폰트의 비트맵이미지 변환 방법 및 그 방법이 구현된 소프트웨어를저장한 컴퓨터가 읽을 수 있는 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070011664A (ko) * 2005-07-21 2007-01-25 (주)정글시스템 스냅 힌팅과 스템 힌팅을 사용한 외곽선 폰트의 비트맵이미지 변환 방법 및 그 방법이 구현된 소프트웨어를저장한 컴퓨터가 읽을 수 있는 기록매체

Also Published As

Publication number Publication date
KR20080111634A (ko) 2008-12-24

Similar Documents

Publication Publication Date Title
US5404436A (en) Computer method and apparatus for converting compressed characters for display in full size
US6282327B1 (en) Maintaining advance widths of existing characters that have been resolution enhanced
US7583267B2 (en) Stroke contrast in font hinting
US7408555B2 (en) Adjusted Stroke Rendering
US5598520A (en) Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary
EP1741063B1 (en) Edge detection based stroke adjustment
CN101341481A (zh) 自动字体控制值确定
KR100677689B1 (ko) 문자 화상 생성 장치, 문자 화상 생성 방법, 표시 제어 장치, 문자 화상 생성 프로그램 또는 표시 제어 프로그램을 기록한 컴퓨터로 판독가능한 기록 매체
US20140285494A1 (en) Display apparatus and method of outputting text thereof
KR20030006443A (ko) 폰트의 손실 압축 및 저장 방법
JPH06208370A (ja) エイリアシング阻止および格子適合を結合した文字表示ラスタ化方法
US4459586A (en) Method for structuring high density display font for display device of text processing system
US6498608B1 (en) Method and apparatus for variable weight outline emboldening of scalable outline fonts
US20080181531A1 (en) Emboldening glyphs without causing conglutination
KR100923572B1 (ko) 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
KR20090080931A (ko) 벡터 스크린 폰트 파일의 생성방법
US11443466B2 (en) 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
US5572234A (en) Display element density conversion
KR100691501B1 (ko) 스냅 힌팅과 스템 힌팅을 사용한 외곽선 폰트의 비트맵이미지 변환 방법 및 그 방법이 구현된 소프트웨어를저장한 컴퓨터가 읽을 수 있는 기록매체
WO2002001546A1 (en) Data structures for overscaling or oversampling character in a system for rendering text on horizontally striped displays
JPH01100590A (ja) 表示制御方式
JPH0392897A (ja) パターン発生装置
Banjanin et al. Font hinting techniques and the importance of applying these techniques for high-quality display of fonts on the output device screen
JPH1063253A (ja) 高品位文字表示装置及び階調表示方法
DALRYMPLE FONT DESIGN

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee