KR20080078844A - 획 대비 제어 방법 및 획 대비 제어 시스템 - Google Patents

획 대비 제어 방법 및 획 대비 제어 시스템 Download PDF

Info

Publication number
KR20080078844A
KR20080078844A KR1020087014909A KR20087014909A KR20080078844A KR 20080078844 A KR20080078844 A KR 20080078844A KR 1020087014909 A KR1020087014909 A KR 1020087014909A KR 20087014909 A KR20087014909 A KR 20087014909A KR 20080078844 A KR20080078844 A KR 20080078844A
Authority
KR
South Korea
Prior art keywords
stroke
glyph
contrast
weight
threshold
Prior art date
Application number
KR1020087014909A
Other languages
English (en)
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 마이크로소프트 코포레이션
Publication of KR20080078844A publication Critical patent/KR20080078844A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • 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
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

프로그램적인 제약 사항 또는 "힌트"를 이용하여 소정 범위의 폰트 사이즈 및 디스플레이 해상도에 대한 획 대비가 유지된다. "폰트 힌팅" 접근법의 일 구현은 렌더링하기에 충분한 폰트 사이즈 및 디스플레이 해상도에 대한 획 대비가 유지되도록 획 웨이트의 조정을 시행한다. 폰트 힌팅 명령어는 글리프를 랜더링할 때 획 대비를 유지할지 생략할지를 결정하는 데에 이용될 수 있는 획 대비 임계치를 결정한다. 일 구현에서, 획 대비 임계치는 서체에 관련된 하나 이상의 획 대비 관계에 기초한다. 다른 구현에서는, 획 대비 임계치는 최소 사이즈 임계치 또는 소문자/대문자 획 대비 관계에 기초한다.
Figure P1020087014909
폰트, 해상도, 글리프, 획 대비

Description

획 대비 제어 방법 및 획 대비 제어 시스템{STROKE CONTRAST IN FONT HINTING}
다수의 컴퓨팅 시스템은 프린팅된 페이지 등의 화면 또는 몇몇의 기타 매체 상에 텍스트를 디스플레이함으로써 사용자에게 정보를 제시할 수 있다(Many computing systems can present information to a user by displaying text on a screen or some other media, such as a printed page). 인간의 시각 체계(human visual system)의 물리적 특징 및 다양한 유형과 품질의 전자 디스플레이 또는 프린트 기술은 유형 설계자(type designer)에게 텍스트가 표시될 수 있는 서체(typeface)를 개발할 때에 특정한 과제(unique challenges)를 부여하였다.
인쇄 체계(typography)에서, 서체는 좌표로 된(coordinated) 문자 세트 설계로 구성되어 있다. 서체는 일반적으로 글자의 알파벳, 숫자, 구두점, 표의 기호(ideograms), 기호(symbols)(문자 또는 글리프(glyph)라 총칭함)를 포함한다. Arial, Times New Roman, Verdana 및 Georgia는 4가지 예시적인 서체이다. 통상적으로, "폰트"라는 단어는 특정 사이즈(일반적으로 포인트(point)로 측정됨), 웨이트(weight)(예를 들면, 라이트(light), 북(book), 볼드(bold), 블랙(black)), 및 방향(orientation)(예를 들면, 로만체(roman), 이탤릭(italic), 기울어짐(oblique))으로 된 완전한 서체를 일컫는다. 소정의 서체에서는, 통상적으로 각 문자가 단일한 글리프에 대응하지만, 일부 서체의 특정 문자들은 복수의 글리프를 포함할 수 있다.
획(stroke)은 많은 글리프의 중요한 특징이다. 예를 들면, 문자 'E'를 나타내는 글리프는 3개의 가로 획(stroke)("크로스바"라고도 칭함) 및 하나의 세로 획을 포함한다고 말할 수 있다.
다수의 서체에서, 개개의 획이 상대적으로 서로 다른 굵기, 즉, 웨이트를 가질 수 있다. 획 웨이트들의 관계를 "획 대비(stroke contrast)"라 칭한다. 획 대비는 서체의 판독성 및 미적 가치(aesthetic)에 공헌할 수 있다. 현대 유형 설계자들의 한 과제는 소정 범위의 폰트 사이즈 및 디스플레이 해상도에 대한 획 대비를 가장 잘 유지하도록 주어진 서체의 글리프를 디스플레이하는 것이다.
본원에 기술되고 청구된 구현들은 프로그래밍 제약사항 또는 "힌트(hints)"를 이용하여 소정 범위의 폰트 사이즈 및 디스플레이 해상도에 대한 획 대비를 유지하는 것을 돕는다. "폰트 힌팅(font hinting)" 접근법의 일 구현은 폰트 사이즈 및 이를 렌더링하기에 충분한 디스플레이 해상도에 대한 획 대비를 유지하도록 획 웨이트의 조정(regularization)을 시행한다. 대안으로, 폰트 사이즈 및 디스플레이 해상도가 주어진 폰트에 대한 모든 필요한 획 웨이트를 렌더링하기에 충분하지 않은 경우, 일부 획 웨이트는 이들 사이즈 및 해상도 한계(limitation)를 수용하도록 이퀄라이징(equalize)될 수 있는 한면, 다른 획 웨이트는 여전히 적어도 일부의 획 대비를 유지하도록 변경될 수 있다. 폰트 힌팅 명령어는 글리프를 랜더링할 때 획 대비를 유지할지 또는 생략(omit)할지를 결정하는 데에 이용될 수 있는 획 대비 임계치를 결정한다. 일 구현에서, 획 대비 임계치는 서체에 관련된 하나 이상의 획 대비 관계에 기초한다. 다른 구현에서, 획 대비 임계치는 최소 사이즈 임계치에 기초한다. 또 다른 구현에서, 획 대비 임계치는 소문자/대문자 획 대비 관계에 기초한다.
소정 구현에서, 제조 물품은 컴퓨터 프로그램 제품으로서 제공된다. 컴퓨터 프로그램 제품의 한 구현은 컴퓨터 프로그램을 인코딩하고 컴퓨터 시스템에 의해 판독가능한 컴퓨터 프로그램 저장 매체를 제공한다. 컴퓨터 프로그램 제품의 다른 구현은 컴퓨터 프로그램을 인코딩하고 컴퓨팅 시스템에 의해 반송파로 구현된 컴퓨터 데이터 신호로 제공될 수 있다. 다른 구현 또한 본원에 기술되고 열거된다.
이 요약은 이하 상세한 설명에서 더 기술될 개념들 중 간단한 형태로 된 선택을 소개하기 위해 제공된 것이다. 이 요약은 청구된 요지의 핵심 특징 또는 필수적인 특징을 식별하는 것을 의도한 것이 아니며, 청구된 요지의 범위를 제한하는 데 이용되는 것을 의도한 것도 아니다.
도 1은 예시적인 폰트 힌팅 모듈 및 결과 문자 디스플레이를 도시하는 도면.
도 2는 소정의 폰트의 글리프를 렌더링하기 위한 예시적인 동작을 도시하는 도면.
도 3은 폰트 힌팅을 유지하는 획 대비를 가지는 서체를 정의하기 위한 예시적인 동작을 나타내는 도면.
도 4는 폰트 힌팅을 유지하는 획 대비를 이용하여 소정 폰트로 된 소정 글리프를 렌더링하기 위한 예시적인 동작을 나타내는 도면.
도 5는 설명된 기술을 구현하는 데에 유용할 수 있는 예시적인 시스템을 도시하는 도면.
좌표, 수학적 커브, 및/또는 기타 파라미터에 의해 기술되는 연속적인 형상 또는 윤곽(outlines) 등의 크기조절 가능한 윤곽 폰트가 정의된다. 일반적으로, 그 윤곽이 일례인 고해상도 표현에 의해 글리프가 정의될 수 있다. 다른 고해상도 표현은 여러 종류의(assorted) 컨투어(contour), 컴포넌트(component) 요소, 비트맵, 수학적인 설명, 및 기타 표현을 포함할 수 있지만 이에 한정되지 않는다.
개개의 글리프가 디스플레이되거나 출력(예를 들면, 프린트)될 때 메모리로부터 판독될 수 있는 폰트 정의(definition)(예를 들면, 폰트 파일 또는 폰트 캐쉬)로 기본 윤곽이 기술된다. 폰트 정의는 폰트 설계 유닛(즉, "폰트 유닛")으로 x 및 y 축을 가지는 데카르트 그리드(Cartesian grid)에 기초할 수 있지만, 다른 좌표 프레임워크가 채용될 수 있다. 이러한 폰트 유닛을 이용하여, 특정 서체의 글리프의 기본 윤곽은 디스플레이되는 글리프 사이즈 또는 출력 장치의 해상도에 관련하지 않고 기술될 수 있다.
글리프를 생성하고자 할 때, 기본 윤곽은 지정된 사이즈로 크기조절된 다음 디스플레이 또는 하드카피 출력 장치에 이 지정된 사이즈로 점들의 이산적인 레스터(raster)(예를 들면, 픽셀들의 비트맵)를 생성하는 데에 이용된다. 이러한 비트 맵이, 그 중심이 크기조절된 윤곽 내에 놓인 각각의 픽셀 또는 프린터 셀(cell)을 단순히 끄는(turning off) 등의 단순한 방식으로 만들어진다면, 특징들의 어긋남(misalignment) 및 형태의 깨짐("드롭-아웃(drop-out)"이라 칭함) 등의 다수의 시각적으로 혼란을 주는 아티팩트(artifact)가 발생할 수 있다. 예를 들면, 글리프가 크기조절되어 작은 사이즈로 및/또는 낮은 해상도 디스플레이에 렌더링되는 경우, 글리프를 나타내기 위한 켜진/꺼진(turned on/off) 픽셀은 크기조절된 윤곽에 전반적으로 비슷해질(grossly approximate) 뿐인데, 이는 결과적인 픽셀이 본래 너무 크고 이산적이어서 완전히 크기조절된 윤곽을 따르지 않기 때문이다.
그래서, 소정의 사이즈 및 디스플레이 해상도에 대하여 글리프를 렌더링하는 것을 최적화하는 데에 "폰트 힌팅(hinting)"이라 칭하는 추가적인 처리가 채용될 수 있다. 폰트 힌팅 코드는 개개의 글리프 각각의 폰트 정의에 포함되거나 이와 관련될 수 있다. 폰트 힌팅은 폰트의 래스터라이제이션(rasterization)을 강화시키기 위하여 래스터 이미지 프로세서(RIP)에 정보를 제공한다. 예를 들면, 폰트 힌팅은 크기조절된 윤곽을 왜곡(distort)시켜 렌더링을 향상시키는 데에 이용될 수 있다. 폰트 힌팅은 (1) 두께가 동일하도록 의도된 획들이 두께가 동일하게 보이는 것을 보장; (2) 원하지 않은 벗어남(overshoot)(예를 들면, "O"와 같은 둥근 글자가 의도하지 않게 "M"과 같은 평평한 글자보다 높아 보이도록 크기조절되는 경우)을 막음; (3) 높이가 동일해야 하는 서로 다른 글리프들의 특징들의 줄을 맞춤(line up); (4) 굵은 세로줄들(stems) 사이의 공간들은 열린 상태(예를 들면, "m"의 가로 획들 사이의 공간들이 보여야함)로 유지; (5) 평행한 획들의 세트들 사 이의 공간이 일관되기를 강요(force consistent spacing) 및 (6) 래스터라이제이션 알고리즘에서 드롭-아웃(drop-out)을 발생시킨 오류와 같은, 오류를 보상(compensate for)하는 데에 이용될 수 있다.
도 1은 예시적인 폰트 힌팅 모듈(100) 및 결과 문자 디스플레이(102, 104, 106, 및 108)를 도시한다. 문자 디스플레이(102)에서 볼 수 있는 바와 같이, 문자 "H"는 2개의 주요 세로 획(110 및 112) 및 하나의 가로 획(114)("크로스바"라고도 칭함)을 포함한다. 문자 디스플레이(102) 내의 문자는 특정 사이즈 및 해상도로 디스플레이되고 가로 획(114)(예를 들면, 1 픽셀)에 비하여 세로 획(110 및 112)이 더 두껍다거나 더 큰 획 웨이트(예를 들면, 3 픽셀)를 가진다는 점에서 획 대비를 제시한다. 폰트 힌팅 모듈(100)은 특정 폰트로 된 문자 "H"의 크기조절된 윤곽을 수신하고 렌더링을 향상시키기 위하여 폰트 힌팅 명령어를 실행시켜 크기조절된 윤곽을 왜곡시킨다.
문자 디스플레이(104)는 문자 "H"를 문자 디스플레이(102)의 사이즈 및 해상도보다 더 작은 사이즈 및 해상도로 보여준다. 그럼에도 불구하고, 사이즈 및 디스플레이 해상도의 조합은 문자 디스플레이(102)에서 본 바와 - 세로 획이 3 픽셀이고 가로 획이 1 픽셀임 - 동일한 획 대비를 유지할 수 있다. 폰트 힌팅 모듈(100)은 특정 폰트로 된 문자 "H"의 크기조절된 윤곽을 수신하고 특정 사이즈 및 해상도를 수용하기 위하여 폰트 힌팅 명령어를 실행시켜 그 정의를 왜곡시킨다.
대조적으로, 문자 디스플레이(106)는 또한 문자 "H"를 문자 디스플레이(102)보다 더 작은 사이즈지만, 문자 디스플레이(104)보다 낮은 해상도로 보여준다. 크 기조절에만 기초하면, 문자의 특정 양태가 문자 디스플레이(106)에 나타나는 "H"에 매핑되지 않을 것이다. 그 대신, 세로 획들은 문자 디스플레이(104)에서 보다 위 아래로 길고(taller), 세로 차원에서는 중심을 벗어났고(off-center), 세리프(serif) 특징에 관련해서 중심이 벗어났을 것이며, 가로 획은 세로 획의 길이에 대해서 중심이 벗어났을 것이다. 그렇기 때문에, 이러한 사이즈 및 디스플레이 해상도의 조합에 대하여, 폰트 힌팅 모듈(100)은 세로 및 가로 획들의 웨이트에 소정의 차이를 강제로 부여(force)함으로써 일부 획 대비를 유지하고 이들 특징을 규제하기 위하여 폰트 힌팅 명령어를 실행시켜 정의를 왜곡시킨다. 획 대비가 문자 디스플레이(102 및 104)에서와 동일하지 않음에도 불구하고 문자 디스플레이(106)에서는 인지가능하여, 서체의 판독성 및 성질(personality)을 유지한다.
그러나, 문자 디스플레이(108)는 문자 디스플레이(104 및 106)와 사이즈는 유사하지만, 문자 디스플레이(106) 보다 훨씬 낮은 해상도로 문자 "H"를 표시한다. 이 구성에서, 가로 및 세로 획의 균일한 획 웨이트에서 명백히 알 수 있는 바와 같이 폰트 힌팅 모듈(100)은 획 대비를 유지할 수 없었다.
그래서, 글리프의 사이즈 및 디스플레이 해상도는 디스플레이된 소정의 폰트의 글리프에서는 오류를 발생시킬 수 있다. 구체적으로는, 이들 파라미터는 특정 폰트에서 획 대비를 손상시킬 수 있다. 그러므로, 폰트 힌팅 모듈(100)은 가능한 많은 획 대비를 유지하기 위해 폰트 힌팅 명령어를 실행시켜 글리프의 크기조절된 윤곽을 왜곡시킨다.
도 2는 소정의 폰트의 글리프를 렌더링하기 위한 예시적인 동작(200)을 도시 한다. 정의 동작(202)은 서체를 정의한다. 기술된 바와 같이, 서체는 통상적으로 그 문자 세트 내의 각 글리프의 기본 윤곽을 정의하는 소정 세트의 좌표들을 포함하도록 정의된다. 몇몇의 구현에서는, 소정 서체로 된 개개의 글리프의 정의는 활자 설계자가(typographer) 수동으로 정의할 수 있다. 다른 구현에서, 개개의 글리프의 정의가 기본 윤곽선의 직접적인 컴퓨터적(computerized) 생성 또는 글리프 샘플의 컴퓨터-구현된 분석을 이용하여 자동으로 결정될 수 있다. 또 다른 구현에서는 개개의 글리프 또는 폰트에 대한 수동적인 정의 및 컴퓨터화된 정의 둘 다 결합할 수 있다.
다른 정의 동작(204)은 소정의 사이즈 및 디스플레이 해상도에 대한 글리프의 크키조절된 윤곽을 왜곡시키도록 폰트 힌팅 명령어를 정의한다. 예를 들면, 폰트 힌팅 명령어는 렌더링 시에 세로 획들이 균일한 너비를 가지는 것을 보장하도록 "H"의 크기조절된 윤곽을 움직이기 위한 동작을 실행할 수 있다. 일 구현에서, 정의 동작(204)은 소정의 서체(또는 그 일부)의 폰트 정의에서의 획 웨이트의 측정을 기록한다. 이들 측정이 분석되어 서체와 관련된 하나 이상의 획 대비 관계를 결정할 수 있다.
판독 동작(206)은 글리프에 대한 폰트 정의 및 폰트 힌팅 코드를 판독한다. 일 구현에서, 폰트 정의는 하드 디스크의 폰트 라이브러리에 저장될 수 있다. 대안으로, 폰트 정의는 글리프가 랜더링될 때마다 재사용을 위해 메모리에 캐슁될 수 있다.
크기조절(scaling) 동작(208)은 글리프에 대해 지정된 기본 윤곽의 크기를 조절한다. 일 구현에서, 기본 윤곽은 카테지안 평면(Cartesian plane)으로 정렬되는(aligned with) 폰트 유닛으로 된 자표들을 이용하여 정의되고, 이들 좌표에 대한 변환(transform)을 이용하여 크기조절이 수행될 수 있다. 크기조절 동작(208)은 애플리케이션 프로그램, 운영 체제, 컴퓨터 또는 컴퓨터적인 장치의 다른 시스템 내의 폰트 힌팅 모듈과 관련된 크기조절 모듈에 의해 수행될 수 있다. 다음에 한 예시적인 크기조절 알고리즘을 나타내었다:
Figure 112008044060781-PCT00001
여기서 Xn은 폰트-유닛 기반 카테지안 격자눈금에서의 글리프에 관련된 X 좌표를 나타내고, Xn'은 픽셀 좌표 시스템에서의 글리프와 관련된 대응하는 크기조절된 X 좌표를 나타내고, Size는 크기조절된 글리프의 포인트 단위 사이즈를 나타내고, Resolution은 출력 장치의 해상도를 나타내고, Granularity는 전각 당 폰트 유닛(font units per em)으로 된 좌표 격자눈금(즉, 전각 사각형)에 관련된 입도 메트릭(metric)을 나타낸다. 인자 '72'는 인치 당 점(point)의 개수를 반영한다.
명령 동작(210)은 글리프의 크기조절된 윤곽에 대한 폰트 힌팅 코드를 실행시킨다. 일 구현에서, 크기조절된 윤곽은 서체, 크기조절된 글리프 사이즈 및 디스플레이 장치의 해상도에 관련된 하나 이상의 획 대비 관계에 기초하여 폰트 힌팅 코드에 의해 계산되는 세로 및 가로 획 너비에 따르도록 왜곡된다. 명령 동작(210)의 예시적인 구현의 상세한 설명이 도 4에 관련하여 제공된다. 명령 동작(210)에 제공되는 폰트 힌팅의 결과는, 가능하다면 크기조절된 글리프 사이즈 및 디스플레이 해상도를 반영하여 소정 획 대비를 제시하는 크기조절된 윤곽이다. 폰트 힌팅 코드의 다른 양태는 드롭-아웃, 벗어남(overshoot) 등을 정정하는 것을 포함하는 크기조절된 글리프의 다른 특징을 변경시킬 수 있다.
렌더링 동작(212)은 왜곡된 크기조절된 윤곽에 기초하여 글리프의 비트맵을 생성한다. 예를 들면, 왜곡된 크기조절된 윤곽 내에 그 중심이 위치된 픽셀은 꺼질(예를 들어, 어두어질) 수 있는 한편, 왜곡된 크기조절된 윤곽 외부에 그 중심이 위치된 픽셀은 켜질(예를 들면, 밝아질) 수 있다. 개개의 픽셀의 상태는 단지 켜지거나 꺼진 상태가 아니라 점진적(progressive)일 수도 있다(예를 들면, 더 밝아졌다 또는 더 어두어졌다)고 이해해야 한다. 대안적인 규칙을 이용하여 비트맵을 생성하는 것 또한 가능하다. 예를 들면, 개개의 픽셀은 하위픽셀들(subpixels)(예를 들면, 픽셀의 서로 다른 색 채널들)로 나뉘어져, 개개의 하위픽셀이 켜지거나 꺼지도록(또는 더 밝아지거나 더 어두워지도록) 할 수 있다. 렌더링 동작(212)은 애플리케이션 프로그램, 운영 체제, 또는 컴퓨터나 컴퓨터적인 장치의 다른 시스템 내의 렌더링 모듈에 의해 수행될 수 있다.
도 3은 폰트 힌팅을 유지하는 획 대비를 가지는 서체를 정의하기 위한 예시적인 동작(300)을 도시한다. 정의 동작(302)은 소정의 서체의 개개의 글리프에 대한 기본 윤곽을 정의한다. 전술한 바와 같이, 기본 윤곽은 좌표, 커브, 및/또는 다른 파라미터를 이용하여 정의될 수 있다. 일 실시예에서, 손으로 또는 컴퓨터로 그린 글리프의 기본 윤곽은 폰트 유닛으로 디지털화되고 폰트 파일에 저장될 수 있다. 그러나, 개개의 글리프에 대한 기본 윤곽은 또한 컴퓨터적인 모델 또는 이미 지로부터 생성될 수 있다.
웨이팅 동작(304)은 서체의 대표적인 글리프 또는 복수의 글리프의 세로 획의 획 웨이트(예를 들면, 두께) 및 가로 획의 획 웨이트를 결정한다. 일 구현에서는, 일련의 전처리 단계에서, 자동-힌터(auto-hinter) 프로그램이 글리프 내의 식별되는 모든 획들(세로, 가로, 및 대각선)의 선분부를 나타내는 데이터 구조를 구축한다. 자동-힌터 프로그램은 소정 메트릭에 따라 획의 에지가 되기에 충분히 일직선이라 간주되는 윤곽의 세그먼트 리스트를 생성한다. 그 다음 자동-힌터 프로그램은 (예를 들면, 크로스 바에 의해 에지가 "인터럽트되는(interrupted)" 글리프 "H" 상의 세로 획의 한쪽에서) 실질적으로 반-평행한(virtually antiparallel) 에지와 연속되는(continuation) 에지의 쌍을 식별하여 개개의 획을 나타내는 데이터 구조의 일부를 구축한다. 소정 인쇄 체계의 발견적 학습법(heuristic)에 따르면, 각 에지는 에지를 가장 잘 기술하는 대표적인 중점과 관련된다. 예를 들면, 수학적으로 완전히 직선인 에지에서는, 2개의 제어점만 필요하고, 이들 중 하나는 대표적인 제어점의 용도로서 작용할 수 있다. 대조적으로, 예를 들어, 약간 오목한 에지에서는, 가장 오목한 부분에서의 중점이 앞서 말한 제어점 용도로 작용하기 위해 식별될 수 있다.
그 다음 이 획의 각 측에서 대표 제어 에지를 선택하고, 이 제어 에지의 대표 제어점들 간의 유클리디안(Euclidean) 거리를 구하고, 획의 주요 방향(principal orientation)에 수직인 법선 벡터 상에 이 거리를 투영함으로써 거리가 결정된다. 예를 들면, (그 방향이 y 방향으로 방향이 정해진) 세로 획으로서 식별된 획에서는, 획 웨이트를 결정하는 데에 이용되는 2개의 제어점은 서로 좌우 방향으로 맞대어 위치될(horizontally opposite) 필요는 없어서, 그 거리가 가로 법선 상에(즉, x방향으로) 투영된다.
계산 동작(306)은 획 웨이트 측정을 처리한다. 일 구현에서, 단일 서체 전반에 걸친 세로 획 웨이트들의 평균을 계산하여 합성된 세로 획 웨이트를 산출하고 단일 서체 전반에 걸친 가로 획 웨이트들의 평균을 계산하여 합성된 가로 획 웨이트를 산출한다. 대안적인 구현에서, 하나 이상의 기준 글리프로부터의 세로 및 가로 획 웨이트들은 합성된 세로 및 가로 획 웨이트들이 나타내는 데에 이용된다. 또 다른 대안적인 구현에서, 개개의 글리프 각각에 대한 평균 세로 및 가로 획 웨이트들이 그 글리프에 대한 합성된 세로 및 가로 획 웨이트로서 이용될 수 있다.
결정 동작(308)은 주어진 서체 또는 이 서체의 개개의 글리프에 대한 획 대비 관계를 결정하는 데에 합성된 획 웨이트를 이용한다. 예를 들면, 서체 "Verdana"에서, 주요 세로 획은 198 폰트 유닛인 웨이트로 설계되는 한편 주요 가로 획은 176 폰트 유닛인 웨이트로 설계된다. 더 얇은 획들이 더 두꺼운 획들의 퍼센트로서 관련되는 획 대비 관계를 이용하면, 결과 획 대비 관계는 89%이다. 또한 더 두꺼운 획들이 더 얇은 획들의 퍼센트로서 관련되는 획 대비 관계뿐만 아니라 비율, 경사, 등을 포함하는 다른 형태의 획 대비 관계도 채용될 수 있다. 저장 동작(310)은 서체 및/또는 이 서체의 개개의 글리프에 관련된 하나 이상의 획 대비 관계를 기록한다. 또한 폰트 힌팅 중에 이용될 수 있는 해상도 임계치, 최소 사이즈 임계치, 획 대비 관계 등을 포함하는 다른 파라미터도 서체 및/또는 개별적인 글리프와 관련될 수 있다.
도 4는 폰트 힌팅을 유지하는 획 대비를 이용하여 폰트의 글리프를 렌더링하기 위한 예시적인 동작(400)을 도시한다. 출력될 글리프가 선택되면, 기본 글리프 윤곽의 폰트 정의 및 관련된 폰트 힌팅 명령어와 다른 파라미터가 판독 동작(402)시에 폰트 라이브러리(즉 캐쉬)로부터 판독된다. 크기조절 동작(404)은 지정된 글리프 사이즈 및 디스플레이 장치의 해상도에 기초하여 기본 윤곽의 크기를 조절한다.
라운딩(rounding) 동작(406)은 픽셀로 된 크기조절된 글리프 윤곽에 대한 획 웨이트들(즉, 세로 또는 가로) 중 큰 쪽의 획 웨이트를 측정하여 가장 근접한 픽셀 또는 소정의 픽셀-관련 라운딩 점으로 측정된 획 웨이트를 라운딩한다. 조정 동작(410)은 획 웨이트 관계에 기초하여 이 라운딩된 큰 쪽의 획 웨이트를 조정하여 획 메트릭 임계치로서 조정된 획 웨이트 메트릭을 결정한다. 예를 들면, 일 구현에서, 글리프에 대한 라운딩된 세로 획 웨이트가 5 픽셀(획 웨이트들 중 더 두꺼운 것)이고 획 대비 관계는 89%라면, 조정된 획 웨이트 메트릭은 다음과 같다:
조정된 획 대비 메트릭 = 라운드 (5 픽셀 중 89%)
= 라운드 (4.45 픽셀)
= 4 픽셀
판정 동작(412)은 크기조절된 윤곽이 획 대비 임계치를 만족시키는지를 검사한다. 예를 들면, 도 4에 나타난 바와 같이, 크기조절된 윤곽은 조정된 획 웨이트 메트릭이 큰 쪽의 획 웨이트와, 예를 들면, 1 픽셀과 같은 적어도 지정된 해상도 임계치만큼 다른 경우에 획 대비 임계치를 만족시킨다. 판정 동작(412)은 획 대비 임계치의 어느 쪽에 글리프가 존재하는지를 효과적으로 식별한다. 획 대비 임계치 중 한쪽에서는, 획 대비가 유지되고; 획 대비 임계치의 다른 쪽에서는, 획 대비가 생략된다.
하나의 픽셀의 특정된 해상도 임계치를 가지는 상술한 예의 경우, 4개의 픽셀의 조정된 획 웨이트 메트릭은 큰 쪽의 획 웨이트(5 픽셀)와 적어도 하나의 픽셀(예시적인 해상도 임계치) 만큼 다르다. 그러므로, 획 대비 임계치가 만족되고, 할당 동작(414)은 조정된 획 웨이트 메트릭을 글리프의 작은 쪽의 획 웨이트에 할당하여, 획 대비를 유지한다. 그렇지 않고, 조정된 획 웨이트 메트릭이 이하 기술된 상황 등에서 큰 쪽의 획 웨이트와 적어도 하나의 픽셀만큼 다르지 않다면,
조정된 획 대비 메트릭 = 라운드 (5 픽셀 중 91%)
= 라운드 (4.55 픽셀)
= 5 픽셀
획 대비 임계치는 만족되지 않고, 다른 할당 동작(416)이 큰 쪽의 획 웨이트를 글리프의 작은 쪽의 획에 할당하여, 획 대비를 희생시킨다.
폰트 힌팅 동작(418)은 할당된 획 웨이트를 가지도록 더 작은 쪽의 크기조절된 윤곽을 왜곡시킨다. (예를 들면, 할당 동작(414)에서) 조정된 획 웨이트 메트릭이 할당되면, 작은 쪽의 획은 이 왜곡에 기초하여 적어도 해상도 임계치만큼인 큰 쪽의 획과의 대비를 제시한다. 대조적으로, (예를 들면, 할당 동작(416)에서) 큰 쪽의 획 웨이트가 할당되면, 작은 쪽의 획은 이 왜곡에 기초하여 큰 쪽의 획과 의 대비를 제시하지 않는다.
획 대비 임계치는 상술한 조정된 획 대비 메트릭 접근법 등의 각종 다른 방법들을 이용하여 결정될 수 있다. 한 대안적인 구현에서, 획 대비 임계치는 (최소 전각 당 픽셀(pixel-per-em) 임계치 등의) 최소 사이즈 임계치에 기초한다. 크기조절된 글리프가 최소 사이즈 임계치 또는 이 임계치를 초과하는 사이즈를 가지는 경우, 획 대비가 유지될 것이다. 소정 인쇄 체계 응용에서, 전각 당 픽셀 사이즈는 출력 장치 환경의 유형적(tangible) 특징을 나타낼 수 있다. 예를 들면, 42 전각 당 픽셀은 통상적인 텍스트 폰트 사이즈 및 통상적인 해상도의 낮은 최종 출력 장치를 모두 나타내는 300 dpi(dots-per-inch) 출력 장치(예를 들면, 레이저나 잉크젯 프린터)에서의 10 포인트에 대응한다. 그러므로, 인쇄 체계 엔지니어는 이러한 출력 장치에 대한 42 전각 당 픽셀의 최소 사이즈 임계치를 설정하여, 예를 들면, 최소 사이즈 임계치를 만족시키도록 (예를 들면, 최소 사이즈 임계치 이상이 되도록) 렌더링되어야 할 임의의 글리프가 획 대비를 유지하도록 (예를 들면, 할당 동작(414) 등을 이용함으로써) 렌더링되게 한다. 대조적으로, 최소 사이즈 임계치를 만족하지 않도록(예를 들면, 최소 사이즈 임계치보다 작도록) 렌더링되어야 하는 임의의 글리프는 (예를 들면, 할당 동작(416) 등을 이용함으로써) 획 대비를 생략하도록 렌더링된다.
또 다른 구현에서, 대문자 획과 소문자 획 간의 획 대비가 제어될 수 있다. 소정 서체에 대하여, 대문자의 주요 세로 획은 대응하는 소문자의 주요 세로 획보다 클 수 있다. 예를 들면, Verdana에서, 문자의 대문자 주요 세로 획은 198 폰트 유닛인 웨이트를 가지도록 설계되는 한편, 동일한 문자의 소문자 주요 세로 획은 188 폰트 유닛인 웨이트를 가지도록 설계되어, 95%인 대문자/소문자 획 대비 관계를 제시한다.
특정 출력 환경(context)에서, 대문자 주요 획은 소문자 주요 획보다 낮은 전각 당 픽셀에서 획 대비 임계치를 만족하여, 대문자는 특정 사이즈/해상도 조건에서 획 대비를 제시하지만, 소문자는 동일한 사이즈/해상도 조건에서 획 대비를 제시하지 않게 될 수 있다. 이러한 상황은 대문자가 소문자보다 확연하게 두껍거나 두드러지게(border) 보이는 의도하지 않았던 혼란스러운 효과를 발생시킬 수 있다.
따라서, 이 구현에서는, 획 대비 임계치는 대문자/소문자 획 대비 관계에 기초하여 결정된다. (예를 들면, 판정 동작(412)과 관련하여 기술된 것과 유사한 검사; 최소 전각 당 픽셀 사이즈, 또는 소정의 기타 방법을 이용하여)글리프의 크기조절된 윤곽이 획 대비 임계치를 만족시킨다면, 크기조절된 글리프는 (예를 들면, 할당 동작(414) 등을 이용함으로써) 대문자 및 소문자 모두에 대한 획 대비를 유지하도록 렌더링된다. 이와는 다르게, 크기조절된 윤곽이 획 대비 임계치를 만족하지 않는다면, 크기조절된 글리프는 획 대비는 생략되지만 대문자와 소문자 간의 일관성은 유지하도록 렌더링된다. 따라서, 이 경우, 서체의 대문자와 소문자 간의 합성된 세로와 가로 획 웨이트가 계산되고, 이 합성된 세로 획 웨이트는 대문자와 소문자 모두의 세로 획에 적용되고 합성된 가로 획 웨이트는 대문자와 소문자 모두의 가로 획에 적용된다. 이 합성된 획 웨이트는 대문자와 소문자 획 웨이트의 평 균 계산(averaging), 대문자와 소문자 획 웨이트의 비례배분(prorating) 등을 포함하는 다양한 방식으로 계산될 수 있다고 이해되어야 한다.
본 발명을 구현하기 위한 도 5의 예시적인 하드웨어 및 운영 환경은 처리 장치(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 각종 시스템 컴포넌트를 처리 장치(21)에 동작적으로 연결시키는 시스템 버스(23)를 포함하는 컴퓨터(20)의 형태로 된 범용 컴퓨팅 장치를 포함한다. 처리 장치(21)는 단지 하나일 수 있거나, 하나를 초과할 수 있어, 컴퓨터(20)의 프로세서가 하나의 CPU로 구성되거나 병렬 처리 환경이라고 통상적으로 칭하여지는 복수의 처리 장치로 구성되도록 한다. 컴퓨터(20)는 통상적인 컴퓨터, 분산형 컴퓨터, 또는 임의의 기타 유형의 컴퓨터일 수 있지만, 본 발명은 이에 제한되지 않는다.
시스템 버스(23)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, SW(switched fabric), 포인트-투-포인트(point-to-point) 접속 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리는 단순히 메모리라고도 칭하여지며, ROM(24) 및 RAM(25)을 포함한다. 시동 중과 같은 때에, 컴퓨터(20) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(26)은 ROM(24)에 저장되어 있다. 컴퓨터(20)는 도시되지 않은 하드 디스크에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(27), 이동식 자기 디스크(29)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(28), CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(31)에 기록을 하거나 그로부터 판독을 하는 광 디 스크 드라이브(30)를 더 포함한다.
하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광 디스크 드라이브(30)는 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광 디스크 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. 드라이브들 및 이들과 관련된 컴퓨터 판독가능 매체는, 컴퓨터(20)를 위해, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장소를 제공한다. 당업자들은 자기 카세트, 플래시 메모리 카드, DVD(digital versatile disk), RAM, ROM, 등과 같은 컴퓨터에 의해 액세스되는 데이터를 저장할 수 있는 임의의 유형의 컴퓨터 판독가능 매체가 예시적인 운영 환경에 이용될 수 있다고 인식해야 한다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램(36), 기타 프로그램 모듈(37), 및 프로그램 데이터(38)를 포함하는 복수의 프로그램 모듈은 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24), 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42) 등의 입력 장치를 통해 명령 및 정보를 퍼스널 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스에 의해 접속될 수도 있다. 모니터(49) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커 및 프린터 등의 기타 주변 출력 장치(도시 생략)를 포함한다.
컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 이들 논리적 접속은 컴퓨터(20)에 연결된 통신 장치 또는 이 컴퓨터의 일부에 의해 이루어지지만, 본 발명은 특정 유형의 통신 장치로 제한되지 않는다. 원격 컴퓨터(49)는 또 하나의 컴퓨터, 서버, 라우터, 네트워크 PC, 클라이언트, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(20)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함하지만, 도 5에는 메모리 저장 장치(50)만이 도시되어 있다. 도 5에 도시된 논리적 접속으로는 LAN(51) 및 WAN(52)이 있다. 이러한 네트워킹 환경은 사무실 네트워크, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷과 같은 모든 유형의 네트워크에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 일 유형의 통신 장치인 네트워크 인터페이스, 즉, 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(20)는 통상적으로 WAN(52)을 통해 통신을 설정하기 위한 모뎀(54), 네트워크 어댑터, 일 유형의 통신 장치, 또는 임의의 기타 유형의 통신 장치를 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(20) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치 에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단 및 통신 장치가 사용될 수 있다는 것을 이해할 것이다.
예시적인 구현에서, 크기조절 모듈, 폰트 힌팅 모듈, 렌더링 모듈 및 기타 모듈은 메모리(404) 및/또는 저장 장치(408 및 410)에 저장되는 명령어에 의해 구현되고 처리 장치(402)에 의해 처리될 수 있다. 폰트 정의, 폰트 힌팅 코드, 획 대비 관계, 해상도 임계치, 최소 사이즈 임계치, 획 대비 임계치, 크기조절된 폰트 윤곽, 렌더링된 비트맵, 및 기타 데이터가 메모리(404) 및/또는 저장 장치(408 및 410)에 저장될 수 있다.
본원에 기술된 기술은 논리적 동작 및/또는 하나 이상의 시스템 내의 모듈들로서 구현된다. 논리적 동작은 하나 이상의 컴퓨터 시스템에서 실행되는 일련의 프로세서-구현 단계로서 구현될 수도 있고 하나 이상의 컴퓨터 시스템 내의 상호접속된 기계 또는 회로 모듈로서 구현될 수도 있다. 마찬가지로, 다양한 컴포넌트 모듈의 설명은 모듈들이 영향을 미치고 이 모듈들에 의해 실행되는 동작 관점에서 제공될 수 있다. 결과 구현은 상술한 기술을 구현하는 기본적인 시스템의 성능 요구사항에 따른 선택에 관한 문제이다. 따라서, 본원에 기술된 기술의 실시예를 구성하는 논리적인 동작은 동작, 단계, 객체, 또는 모듈이라 다양하게 칭할 수 있다. 또한, 논리적 동작들은 명시적으로 그렇지 않다고 청구되거나 특정 순서가 청구 언어에 의해 본질적으로 요구되지 않는 한 임의의 순서로 수행될 수 있다고 이해되어야 한다.
상술한 설명, 예, 및 데이터는 본 발명의 예시적인 실시예의 구조 및 사용의 완전한 설명을 제공한다. 본 발명의 다양한 실시예가 특정한 수준으로 자세하게, 또는 하나 이상의 개별적인 실시예를 참조하여 상술되었지만, 당업자들은 본 발명의 사상 및 범주로부터 벗어나지 않는 개시된 실시예에 대한 다양한 변형물을 구현할 수 있다. 실제로, 설명된 기술은 퍼스널 컴퓨터와는 독립적으로 채용될 수 있다고 이해되어야 한다. 따라서 다른 구현들이 고려된다. 상술한 설명에 포함되고 첨부된 도면에 도시된 모든 항목들은 단지 예시적인 특정 실시예일 뿐이며 제한되지 않는다고 해석되어야 함을 의도한다. 이하 청구항에 정의된 본 발명의 기본적인 구성요소와는 벗어나지 않는 구체적이거나 구조적인 변경들이 이루어질 수 있다.
본원 요지가 구조적인 특징 및/또는 방법론적인 분야에 특정된 언어로 기술되었지만, 첨부된 청구항에 정의된 요지는 상술한 특정 특징 또는 행위로 제한될 필요가 없다고 이해되어야 한다. 오히려, 상술한 특정 특징 및 행위는 청구된 요지를 구현하는 예시적인 형태로서 개시된 것이다.

Claims (20)

  1. 디스플레이 해상도(display resolution)를 가지는 출력 장치에 의해 지정된 글리프(glyph) 사이즈로 표시하기 위하여 서체(typeface)의 글리프의 획 대비(stroke contrast)를 제어하는 방법으로서,
    상기 글리프는 정의된 기본 표현을 가지며,
    상기 지정된 글리프 사이즈 및 상기 디스플레이 해상도에 따라 상기 글리프의 상기 기본 표현의 크기를 조절(scaling)하는 단계(206),
    상기 지정된 글리프 사이즈 및 상기 디스플레이 해상도에 기초하여 획 대비 임계치를 결정하는 단계(208),
    상기 글리프의 크기조절된 표현이 상기 획 대비 임계치를 만족시킨다면, 상기 글리프에서 상기 획 대비를 유지하도록 상기 크기조절된 표현을 왜곡(distort)시키는 단계(210),
    상기 글리프의 크기조절된 표현이 상기 획 대비 임계치를 만족시키지 않는다면, 상기 글리프에서 상기 획 대비를 생략(omit)하도록 상기 크기조절된 표현을 왜곡시키는 단계(210)
    를 포함하는 획 대비 제어 방법.
  2. 제1항에 있어서,
    상기 서체에 관련된 획 대비 관계를 결정하는 단계를 더 포함하고,
    상기 획 대비 임계치는 상기 획 대비 관계에 기초하는 획 대비 제어 방법.
  3. 제2항에 있어서,
    상기 획 대비 관계는 상기 글리프의 상기 기본 표현의 세로 획 웨이트(weight)를 상기 글리프의 상기 기본 표현의 가로 획 웨이트에 관련시키는 획 대비 제어 방법.
  4. 제1항에 있어서,
    상기 결정 단계는
    상기 서체에 관련된 획 대비 관계를 결정하는 단계,
    상기 글리프의 상기 크기조절된 표현의 세로 획 웨이트와 상기 글리프의 상기 크기조절된 표현의 가로 획 웨이트 중에서 큰 쪽의 획 웨이트를 선택하는 단계,
    상기 큰 쪽의 획 웨이트를 가장 근접한 픽셀-관련 라운딩(rounding) 점으로 라운딩하는 단계, 및
    상기 획 대비 관계에 기초하여 상기 라운딩된 큰 쪽의 획 웨이트를 조정하여 상기 획 대비 임계치로서 조정된 획 웨이트 메트릭(metric)을 생성하는 단계
    를 포함하는 획 대비 제어 방법.
  5. 제4항에 있어서,
    상기 조정된 획 웨이트 메트릭이 상기 라운딩된 큰 쪽의 획 웨이트와 적어도 해상도 임계치만큼 다른 경우, 상기 획 대비 임계치를 만족시키도록 상기 글리프의 상기 크기조절된 표현이 결정되는 획 대비 제어 방법.
  6. 제4항에 있어서,
    상기 글리프에서 상기 획 대비를 유지하도록 상기 크기조절된 표현을 왜곡시키는 단계는,
    상기 글리프의 상기 크기조절된 표현의 세로 획 웨이트와 상기 글리프의 상기 크기조절된 표현의 가로 획 웨이트 중에서 작은 쪽의 획 웨이트를 가지는 글리프의 획을 선택하는 단계, 및
    상기 조정된 획 웨이트 메트릭의 획 웨이트를 가지도록 상기 선택된 획을 왜곡시키는 단계
    를 포함하는 획 대비 제어 방법.
  7. 제4항에 있어서,
    상기 조정된 획 웨이트 메트릭이 상기 라운딩된 큰 쪽의 획 웨이트와 적어도 해상도 임계치만큼 다르지 않은 경우, 상기 획 대비 임계치를 만족시키지 않도록 상기 글리프의 상기 크기조절된 표현이 결정되는 획 대비 제어 방법.
  8. 제4항에 있어서,
    상기 글리프에서 상기 획 대비를 생략하도록 상기 크기조절된 표현을 왜곡시 키는 단계는,
    상기 글리프의 상기 크기조절된 표현의 세로 획 웨이트와 상기 글리프의 상기 크기조절된 표현의 가로 획 웨이트 중에서 작은 쪽의 획 웨이트를 가지는 글리프의 획을 선택하는 단계, 및
    상기 큰 쪽의 획 웨이트의 획 웨이트를 가지도록 상기 선택된 획을 왜곡시키는 단계
    를 포함하는 획 대비 제어 방법.
  9. 제1항에 있어서,
    상기 글리프를 상기 출력 장치에 렌더링(rendering)하는 단계를 더 포함하는 획 대비 제어 방법.
  10. 제1항에 있어서,
    상기 서체에 관련된 최소 사이즈 임계치를 결정하는 단계를 더 포함하고,
    상기 획 대비 임계치는 상기 최소 사이즈 임계치에 기초하는 획 대비 제어 방법.
  11. 제1항에 있어서,
    상기 서체의 대문자의 획 웨이트를 상기 서체의 소문자에 관련시키는 획 대비 관계를 결정하는 단계를 더 포함하는 획 대비 제어 방법.
  12. 제11항에 있어서,
    상기 획 대비 관계는 상기 글리프의 대문자 버전의 기본 표현의 획 웨이트를 상기 글리프의 소문자 버전의 기본 표현의 획 웨이트에 관련시키는 획 대비 제어 방법.
  13. 제1항에 있어서,
    상기 결정 단계는
    상기 서체의 대문자의 획 웨이트를 상기 서체의 소문자의 획 웨이트에 관련시키는 획 대비 관계를 결정하는 단계,
    상기 글리프의 상기 크기조절된 표현의 세로 문자 획 웨이트와 상기 글리프의 상기 크기조절된 표현의 가로 문자 획 웨이트 중에서 큰 쪽의 문자 획 웨이트를 선택하는 단계,
    상기 큰 쪽의 획 웨이트를 가장 근접한 픽셀-관련 라운딩 점으로 라운딩하는 단계, 및
    상기 획 대비 관계에 기초하여 상기 라운딩된 큰 쪽의 획 웨이트를 조정하여 상기 획 대비 임계치로서 조정된 획 웨이트 메트릭을 생성하는 단계
    를 포함하는 획 대비 제어 방법.
  14. 제13항에 있어서,
    상기 조정된 획 웨이트 메트릭이 상기 라운딩된 큰 쪽의 획 웨이트와 적어도 해상도 임계치만큼 다른 경우, 상기 획 대비 임계치를 만족시키도록 상기 글리프의 상기 크기조절된 표현이 결정되는 획 대비 제어 방법.
  15. 제13항에 있어서,
    상기 글리프에서 상기 획 대비를 유지하도록 상기 크기조절된 표현을 왜곡시키는 단계는,
    상기 글리프의 상기 크기조절된 표현의 세로 획 웨이트와 상기 글리프의 상기 크기조절된 표현의 가로 획 웨이트 중에서 작은 쪽의 획 웨이트를 가지는 글리프의 획을 선택하는 단계, 및
    상기 조정된 획 웨이트 메트릭의 획 웨이트를 가지도록 상기 선택된 획을 왜곡시키는 단계
    를 포함하는 획 대비 제어 방법.
  16. 제13항에 있어서,
    상기 조정된 획 웨이트 메트릭이 상기 라운딩된 큰 쪽의 획 웨이트와 적어도 해상도 임계치만큼 다르지 않은 경우, 상기 획 대비 임계치를 만족하지 않도록 상기 글리프의 상기 크기조절된 표현이 결정되는 획 대비 제어 방법.
  17. 제13항에 있어서,
    상기 글리프에서 상기 획 대비를 생략하도록 상기 크기조절된 표현을 왜곡시키는 단계는,
    상기 글리프의 대문자 버전의 크기조절된 표현의 획 웨이트 및 상기 글리프의 소문자 버전의 크기조절된 표현의 획 웨이트 모두에 기초하여 합성된 획 웨이트를 계산하는 단계, 및
    상기 글리프의 대문자 버전의 크기조절된 표현 및 상기 글리프의 소문자 버전의 크기조절된 표현 모두를 상기 합성된 획 웨이트를 가지도록 왜곡시키는 단계
    를 포함하는 획 대비 제어 방법.
  18. 제17항에 있어서,
    상기 합성된 획 웨이트를 계산하는 단계는
    상기 글리프의 대문자 버전의 크기조절된 표현의 획 웨이트와 상기 글리프의 소문자 버전의 크기조절된 표현의 획 웨이트의 평균을 계산하는 단계를 포함하는 획 대비 제어 방법.
  19. 디스플레이 해상도를 가지는 출력 장치에 의해 표시하기 위하여 서체의 글리프의 획 대비를 제어하기 위한 시스템으로서,
    상기 글리프는 정의된 기본 표현을 가지며,
    지정된 글리프 사이즈 및 상기 디스플레이 해상도에 따라 상기 글리프의 상기 표현의 크기를 조절하는 크기조절 모듈(scaling module; 208),
    상기 지정된 글리프 사이즈 및 상기 디스플레이 해상도에 기초하여 획 대비 임계치를 결정하고, 상기 글리프의 크기조절된 표현이 상기 획 대비 임계치를 만족시킨다면, 상기 글리프에서 상기 획 대비를 유지하도록 상기 크기조절된 표현을 왜곡시키고, 상기 글리프의 크기조절된 표현이 상기 획 대비 임계치를 만족시키지 않는다면, 상기 글리프에서 상기 획 대비를 생략하도록 상기 크기조절된 표현을 왜곡시키는 폰트 힌팅(font hinting) 모듈(100)
    을 포함하는 획 대비 제어 시스템.
  20. 디스플레이 해상도를 가지는 출력 장치에 의해 표시하기 위하여 서체의 글리프의 획 대비를 제어하기 위한 시스템으로서,
    상기 글리프는 정의된 기본 표현을 가지며,
    지정된 글리프 사이즈 및 상기 디스플레이 해상도에 따라 상기 글리프의 상기 표현의 크기를 조절하는 크기조절 모듈(208),
    상기 지정된 글리프 사이즈 및 상기 디스플레이 해상도에 기초하여 획 대비 임계치를 결정하는 폰트 힌팅(font hinting) 모듈(100) - 상기 획 대비 임계치는 하나 이상의 기본 표현으로부터 획 웨이트를 관련시키는 획 대비 관계에 기초함 - , 및
    상기 글리프의 크기조절된 표현이 상기 획 대비 임계치를 만족시킨다면, 상기 글리프에서 상기 획 대비를 유지하도록 상기 크기조절된 표현의 비트맵을 상기 출력 장치용으로 생성하고, 상기 글리프의 크기조절된 표현이 상기 획 대비 임계치 를 만족시키지 않는다면, 상기 글리프에서 상기 획 대비를 생략하도록 상기 크기조절된 표현의 비트맵을 상기 출력 장치용으로 생성하는 렌더링 모듈(212)
    을 포함하는 획 대비 제어 시스템.
KR1020087014909A 2005-12-19 2006-11-22 획 대비 제어 방법 및 획 대비 제어 시스템 KR20080078844A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/311,946 US7583267B2 (en) 2005-12-19 2005-12-19 Stroke contrast in font hinting
US11/311,946 2005-12-19

Publications (1)

Publication Number Publication Date
KR20080078844A true KR20080078844A (ko) 2008-08-28

Family

ID=38172893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087014909A KR20080078844A (ko) 2005-12-19 2006-11-22 획 대비 제어 방법 및 획 대비 제어 시스템

Country Status (8)

Country Link
US (1) US7583267B2 (ko)
EP (1) EP1964064A2 (ko)
JP (1) JP2009520238A (ko)
KR (1) KR20080078844A (ko)
CN (1) CN101331520A (ko)
BR (1) BRPI0619369A2 (ko)
TW (1) TW200745990A (ko)
WO (1) WO2007078465A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013191482A1 (ko) * 2012-06-21 2013-12-27 (주)한양정보통신 글리프 보간을 이용한 폰트 생성 장치 및 방법
KR101720897B1 (ko) * 2016-03-04 2017-04-10 주식회사 윤디자인그룹 글자 사이의 간격 적분을 통한 폰트 생성 방법 및 이를 수행하는 컴퓨터 프로그램

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7256786B2 (en) * 2004-05-28 2007-08-14 Microsoft Corporation Appropriately rendering a graphical object when a corresponding outline has exact or inexact control points
US8253742B2 (en) * 2004-05-28 2012-08-28 Microsoft Corporation Rendering stroke pairs for graphical objects
US7292249B2 (en) 2004-05-28 2007-11-06 Microsoft Corporation Appropriately rendering a graphical object when a corresponding outline has excessive control points
WO2010134919A1 (en) * 2009-05-21 2010-11-25 Hewlett-Packard Development Company, L.P. Generation of an individual glyph, and system and method for inspecting individual glyphs
US9483167B2 (en) 2010-09-29 2016-11-01 Adobe Systems Incorporated User interface for a touch enabled device
US9229636B2 (en) 2010-10-22 2016-01-05 Adobe Systems Incorporated Drawing support tool
US20130132907A1 (en) * 2011-03-02 2013-05-23 Adobe Systems Incorporated Shape pixel rendering
US8842120B2 (en) 2011-03-02 2014-09-23 Adobe Systems Incorporated Physics rules based animation engine
US8416243B2 (en) * 2011-03-10 2013-04-09 Konica Minolta Laboratory U.S.A., Inc. Approximating font metrics for a missing font when substituting an available replacement
US10031641B2 (en) 2011-09-27 2018-07-24 Adobe Systems Incorporated Ordering of objects displayed by a computing device
CN103177709B (zh) * 2011-12-20 2015-03-11 北大方正集团有限公司 字符显示方法和装置
CN103186365B (zh) * 2011-12-30 2015-08-12 北大方正集团有限公司 一种根据字形轮廓变化生成控制指令的方法及系统
US9230514B1 (en) * 2012-06-20 2016-01-05 Amazon Technologies, Inc. Simulating variances in human writing with digital typography
US9323726B1 (en) * 2012-06-27 2016-04-26 Amazon Technologies, Inc. Optimizing a glyph-based file
WO2014157887A1 (en) * 2013-03-25 2014-10-02 Samsung Electronics Co., Ltd. Display apparatus and method of outputting text thereof
KR102178258B1 (ko) * 2013-09-27 2020-11-12 삼성전자주식회사 디스플레이 장치 및 이의 글자 효과 제공 방법
US20150348278A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Dynamic font engine
JP6570643B2 (ja) 2015-01-30 2019-09-04 イー インク コーポレイション 電気光学ディスプレイのためのフォント制御、ならびに、関連する装置および方法
CN104965658A (zh) * 2015-07-23 2015-10-07 上海斐讯数据通信技术有限公司 显示设备及其全屏信息浏览方法和系统
TWI567568B (zh) * 2016-03-22 2017-01-21 文鼎科技開發股份有限公司 字型調整方法
CN109447055B (zh) * 2018-10-17 2022-05-03 中电万维信息技术有限责任公司 一种基于ocr字形相近文字识别方法
CN111260743A (zh) * 2020-01-08 2020-06-09 北大方正集团有限公司 文字笔画的调整方法和装置
TWI809353B (zh) * 2021-02-09 2023-07-21 捷思博科技有限公司 用於鍵盤圖像比對之影像辨識系統、方法及電腦可讀媒介

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5068905A (en) * 1989-12-28 1991-11-26 Eastman Kodak Company Scaler gate array for scaling image data
US5241653A (en) * 1990-04-12 1993-08-31 Adobe Systems Incorporated Apparatus and method for adjusting and displaying scaled, rasterized characters
US5796409A (en) * 1993-04-06 1998-08-18 Ecole Polytechnique Federale De Lausanne Method for producing contrast-controlled grayscale characters
JPH06297779A (ja) * 1993-04-14 1994-10-25 Brother Ind Ltd 印字装置
US5664086A (en) * 1993-04-16 1997-09-02 Adobe Systems Incorporated Method and apparatus for generating digital type font, and resulting fonts using generic font and descriptor file
US5586241A (en) * 1993-06-10 1996-12-17 Hewlett-Packard Company Method and system for creating, specifying, and generating parametric fonts
US5577170A (en) * 1993-12-23 1996-11-19 Adobe Systems, Incorporated Generation of typefaces on high resolution output devices
JP3483946B2 (ja) * 1994-08-19 2004-01-06 三菱電機株式会社 フォント処理装置及びフォント処理方法
US5929866A (en) * 1996-01-25 1999-07-27 Adobe Systems, Inc Adjusting contrast in anti-aliasing
US6151032A (en) 1996-09-20 2000-11-21 Dynalab, Inc. Stroke-based glyph-outline font generation in low/high resolution space
US6597360B1 (en) * 1998-10-07 2003-07-22 Microsoft Corporation Automatic optimization of the position of stems of text characters
US6678410B1 (en) * 1999-02-17 2004-01-13 Adobe Systems Incorporated Generating a glyph
US7271805B1 (en) * 2003-06-22 2007-09-18 Apple Inc. System and method for displaying text
US7719536B2 (en) * 2004-03-31 2010-05-18 Adobe Systems Incorporated Glyph adjustment in high resolution raster while rendering
US7580039B2 (en) * 2004-03-31 2009-08-25 Adobe Systems Incorporated Glyph outline adjustment while rendering
US7602390B2 (en) 2004-03-31 2009-10-13 Adobe Systems Incorporated Edge detection based stroke adjustment
US8253742B2 (en) * 2004-05-28 2012-08-28 Microsoft Corporation Rendering stroke pairs for graphical objects
US7710422B2 (en) * 2004-07-26 2010-05-04 Microsoft Corporation Font representations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013191482A1 (ko) * 2012-06-21 2013-12-27 (주)한양정보통신 글리프 보간을 이용한 폰트 생성 장치 및 방법
KR101720897B1 (ko) * 2016-03-04 2017-04-10 주식회사 윤디자인그룹 글자 사이의 간격 적분을 통한 폰트 생성 방법 및 이를 수행하는 컴퓨터 프로그램

Also Published As

Publication number Publication date
JP2009520238A (ja) 2009-05-21
TW200745990A (en) 2007-12-16
US7583267B2 (en) 2009-09-01
EP1964064A2 (en) 2008-09-03
BRPI0619369A2 (pt) 2011-09-27
US20070139415A1 (en) 2007-06-21
WO2007078465A3 (en) 2007-10-11
CN101331520A (zh) 2008-12-24
WO2007078465A2 (en) 2007-07-12

Similar Documents

Publication Publication Date Title
KR20080078844A (ko) 획 대비 제어 방법 및 획 대비 제어 시스템
JP5329971B2 (ja) フォント制御値を生成する方法、コンピュータ可読記録媒体、及びシステム
US7505040B2 (en) Composite characters font hinting
US6597360B1 (en) Automatic optimization of the position of stems of text characters
US6396505B1 (en) Methods and apparatus for detecting and reducing color errors in images
US7408555B2 (en) Adjusted Stroke Rendering
JP2007058868A (ja) 置換コンピュータ字体の供給方法及び装置
US6614432B1 (en) Image rendering technique
JP2013061660A (ja) 低解像度ディスプレイのためのストロークベースのフォント文字を生成する方法
JPH08106276A (ja) スクリーン上でのテキスト表示方法
KR101169078B1 (ko) 대응하는 아웃라인에 컨트롤 포인트가 부족한 경우에그래픽 오브젝트를 적절하게 렌더링하는 방법
US7602390B2 (en) Edge detection based stroke adjustment
JP4162670B2 (ja) シルエット化グレーフォント発生方法
JPH06208370A (ja) エイリアシング阻止および格子適合を結合した文字表示ラスタ化方法
US6498608B1 (en) Method and apparatus for variable weight outline emboldening of scalable outline fonts
Hersch et al. Perceptually tuned generation of grayscale fonts
US7945119B2 (en) Optimizing character rendering
KR100923572B1 (ko) 폰트 작성 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
Banjanin et al. Font hinting techniques and the importance of applying these techniques for high-quality display of fonts on the output device screen
KR20090080931A (ko) 벡터 스크린 폰트 파일의 생성방법
JPWO2007074792A1 (ja) データ処理装置、データ処理方法、電子情報機器、制御プログラムおよび可読記録媒体

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid