KR101159387B1 - 강조된 앤티-에일리어싱 비트맵을 생성하기 위한 입력 흑백비트맵의 사용 - Google Patents
강조된 앤티-에일리어싱 비트맵을 생성하기 위한 입력 흑백비트맵의 사용 Download PDFInfo
- Publication number
- KR101159387B1 KR101159387B1 KR1020077016576A KR20077016576A KR101159387B1 KR 101159387 B1 KR101159387 B1 KR 101159387B1 KR 1020077016576 A KR1020077016576 A KR 1020077016576A KR 20077016576 A KR20077016576 A KR 20077016576A KR 101159387 B1 KR101159387 B1 KR 101159387B1
- Authority
- KR
- South Korea
- Prior art keywords
- bitmap
- act
- black
- pixels
- white
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1827—Accessing generic data, e.g. fonts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1835—Transforming generic data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1835—Transforming generic data
- G06K15/1844—Anti-aliasing raster data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/34—Smoothing or thinning of the pattern; Morphological operations; Skeletonisation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Controls And Circuits For Display Device (AREA)
- Dot-Matrix Printers And Others (AREA)
- Image Processing (AREA)
Abstract
강조된 앤티-에일리어싱 비트맵을 생성하기 위해 입력 흑백 비트맵을 강조하는 컴퓨터-구현 시뮬레이션 강조 메카니즘이 제공된다. 시뮬레이션된 강조는 주위 픽셀들에 관한 문맥 정보를 고려하여 강조 방향으로 픽셀의 강도를 조정한다. 강조는 흑백 출력 비트맵에 제한되지 않기 때문에, 그리고 강조는 그러한 문맥 정보를 고려하기 때문에, 결과적으로 얻은 강조된 문자의 명료성 및 가독성이 향상된다.
흑백 비트맵, 앤티-에일리어싱, 그레이 레벨, 강조 방향, 캡, 튜브
Description
본 발명은 폰트 렌더링 기술에 관한 것으로, 더욱 구체적으로 폰트 문자의 알고리즘 시뮬레이션 강조를 실행하는 메카니즘에 관한 것이다.
컴퓨팅 기술은 광범위한 여러가지 응용을 가능하게 한다. 이들 응용의 일부는 예를 들어, 마우스, 키보드, 마이크로폰 또는 카메라 등을 통해 인간 사용자로부터 입력을 수신함으로써, 또는 예를 들어, 스피커, 디스플레이 또는 프린터를 통해 인간 사용자에게 출력을 제공함으로써, 인간과 접속한다. 특히, 시각이 그러한 인간의 우세한 감각 능력이기 때문에, 인간 사용자는 전형적으로 계산 결과의 해석 및/또는 애플리케이션과의 접속을 위해 몇 종류의 프린터 또는 디스플레이에 의존한다.
한가지 유형의 표시된 재료는 문자이다. 문자(텍스트이든 아니든) 세트는 흔히 논리적으로 함께 그룹화될 수 있다. 하나의 폰트는 문자의 논리적 그룹화의 한 예를 나타낸다. 특히, 하나의 폰트는 특정 스타일 및 크기로 된 프린트가능 또는 표시가능 문자의 세트이다. 폰트의 문자는 흔히 "글리프(glyphs)"라 칭해진다.
폰트의 문자(글리프)는 아우트라인에 의해 또는 내장된 비트맵에 의해 기술될 수 있다. 아우트라인은 문자 모양의 윤곽선을 묘사함으로써 문자를 기술한다. 그러한 아우트라인은 더욱 용이하게 스케일가능하다. 래스터화 프로세스 동안에, 소프트웨어는 원하는 점 크기 또는 EM 당 픽셀(ppem)이 주어지면 아우트라인을 표시에 적합한 비트맵으로 변환할 수 있다.
내장된 비트맵은 일반적으로, 특정 ppem에 대응하는 수동으로 사전 디자인된 비트맵 이미지이다. 내장된 비트맵은 일반적으로 단지 저 및 중 PPEM을 위해서, 그리고 힌팅(hinting)되지 않은 아우트라인의 래스터화로부터 비롯된 것들보다 더 높은 이미지 품질을 보통 요구하는 그러한 ppem을 위해 존재한다. 힌팅은 저 ppem을 위한 렌더링된 결과의 품질을 개선하는 (내장 비트맵에 비해) 다른 방식을 나타내는 아우트라인의 조건부 변경이다.
종래, 비교적 적은 수의 문자 및 비교적 단순한 문자 모양을 갖는 폰트의 문자(이를테면, 라틴어)는 힌팅된 아우트라인에 의해 기술된다. 한편, 많은 수의 문자 및 비교적 복잡한 문자 모양을 갖는 폰트의 문자(이를테면, 동아시아 폰트, 이후 EA라고도 함)는 힌팅되지 않은 아우트라인에 의해, 그리고 일반적으로 일련의 내장된 흑백 비트맵(이후, BW라고도 함)에 의해 기술된다. 그러한 더욱 복잡한 폰트는 일반적으로, 몇몇의(하지만, 반드시 이들 모두는 아님) 저 및 중 ppem을 위해 내장된 비트맵을 갖는다. 더욱이, 내장된 비트맵은 반드시 폰트 내의 문자들의 전체 레퍼토리를 커버하지는 않는다. 아주 드물게, 폰트는 앤티-에일리어싱(이후, AA라고도 함) 내장 비트맵을 포함한다. 아주 몇몇(만약 있다면) 폰트는 CLEARTYPE ®(이후, CT라고도 함) 포맷의 내장 비트맵을 포함한다.
몇몇 상황에서는, 문자를 "볼드(bold)"하는 것이 바람직하다. 볼드된 문자는 더 굵은 비주얼 또는 인쇄 웨이트(weight)를 갖는 경향이 있다. 볼드된 문자는 흔히 그와 상대되는 정규 웨이트 문자 대신에 제공된다. 문자를 볼드하는 것이 바람직할 수 있는 다수의 경우가 있다. 예를 들어, 문자는 흔히 문자에 의해 전달되는 의미를 강조하기 위해 볼드된다.
하나의 폰트는, 더 굵은 웨이트를 나타내는 폰트 문자의 각기 다른 디자인이 있으며, 그들 디자인이 오리지널 폰트와 관련되는 렌더링 소프트웨어에 의해 인식가능한 방식으로 저장되는 경우에, 하나의 트루 볼드 버전(true bold version)을 갖는다. 한 폰트의 문자들과 관련된 트루 볼드 디자인은 오리지널 정규 웨이트 폰트의 문자들에 관한 균일한 볼딩 변환을 반드시 따르지는 않는다. 문자들의 상이한 요소는 문자의 균일한 형식이 주어지면 적절하게 상이한 방식으로 강조된다. 종종, 인간은 더욱 확실한 고품질의 볼드된 형태에 기여하는 다수의 주관적인 미적 판단을 고려하기 위해 볼드된 폰트의 맞춤 디자인에 열중한다.
종래, 적은 수의 문자 및 비교적 단순한 문자 모양을 갖는 가장 일반적으로 사용된 폰트(이를테면, 라틴어 폰트)는 관련된 트루 볼드 버전을 갖는다. 그러나, 폰트의 맞춤 디자인과 관련된 시간 및 비용으로 인해, 더욱 복잡한 문자 및 더 많은 수의 문자를 갖는 대부분의 더 큰 폰트는 관련된 트루 볼드 버전을 갖지 않는다. 더구나, 이들 복잡한 문자 세트를 위한 그러한 트루 볼드 폰트의 디자인은 엄청나게 비쌀 수 있다. 결과적으로, 사용자가 볼드 옵션을 선택하면, 시뮬레이션된 강조(emboldening)는 렌더링 엔진에 의해 실행된다.
시뮬레이션된 강조는 정규 폰트로부터의 데이터에 기초하여 렌더링 엔진에 의해 실행된 자동적인 알고리즘 절차이다. 현재 적용된 시뮬레이션된 강조는 균일한 알고리즘에 의해 실행되는데, 이 균일한 알고리즘은 볼드된 폰트 데이터의 품질 및 외관을 개선하는 다수의 주관적인 판단에 또는 오리지널 디자인 의도에 항상 민감한 것은 아니다.
시뮬레이션된 강조를 위한 현재 적용된 알고리즘이 단순한 문자를 갖는 폰트에 아주 알기 쉬운 결과를 제공하지만, 그러한 알고리즘은 일반적으로 더욱 복잡하고 조밀한 문자를 갖는 폰트에는 알기 쉬운 결과를 제공하지 못한다.
단순화된 관점에서, 렌더링 프로세스는 3가지 단계로 나누어질 수 있다. 제1 단계에서, 폰트 파일로부터의 정보는 액세스되고, 필요하다면, 래스터라이저(rasterizer)-판독가능 포맷으로 변환된다. 제2 단계에서, 래스터라이저-판독가능 폰트 포맷이 비트맵이라 불리는 값들의 2차원 어레이로 변환되는 래스터화 프로세스가 발생한다. 비트맵은 "단순 비트맵"에 대해 픽셀 당 하나의 값을 가질 것이고, CLEARTYPE® 비트맵의 경우 "오버스케일드(overscaled) 비트맵"에 대해 픽셀 당 하나보다 많은 값을 가질 것이다. 값은 흑백(Black and White: BW) 비트맵의 경우에 단순히 이진 값(예를 들어, 0 또는 1)일 수 있고, 또는 AA 비트맵의 경우에 어느 범위의 값(예를 들어, 0에서 16까지)일 수 있다. 제3 단계에서, 디스플레이의 픽셀(또는 픽셀 서브-컴포넌트)로의 비트맵 값의 실제 매핑이 발생하여 문자가 표시된다.
시뮬레이션된 강조는 래스터화 프로세스 동안에 제2 단계에서 발생한다. 디스플레이로의 비트맵 값의 매핑인 제3 단계는 특정 강조 알고리즘의 선택, 및/또는 일단 알고리즘이 선택된 경우의 파라미터의 조정에 영향을 미칠 수 있지만, 특정 종류의 매핑은 본 발명의 기본 원리 및 실시예의 설명을 명확하게 하기 위해 명세서로부터 생략될 수 있다. 시뮬레이션된 강조 알고리즘이 래스터화 프로세스의 제2 단계에서 발생하기 때문에, 제2 단계 처리는 여기에서 설명되는 주요 단계가 될 것이다.
현재, 3가지 주요 렌더링 모드; 즉, 흑백(BW), 앤티-에일리어싱(AA) 및 CLEARTYPE®(CT)가 있다. 종래, 래스터화 단계에서, 렌더링 모드는 비트맵의 최종 포맷을 정하고, 특히 강조가 적용된 경우에 강조된 비트맵의 출력 포맷을 정한다.
렌더링 모드의 선택에 영향을 미칠 수 있는 여러가지 요인이 있다. 그러한 요인은 예를 들어, 장치 특성 및 세팅, 요청된 ppem, 폰트 데이터(예를 들어, 내장된 비트맵의 존재, (OPENTYPE®/TrueType 폰트 파일에서와 같이) "gasp" 테이블의 존재 및 내용), 요청된 임의의 기하학적 변환의 존재 및 종류를 포함할 수 있다. 그외 다른 요인이 렌더링 모드의 선택에 영향을 미칠 수 있다. 예를 들어, 폰트의 "복잡성"은 렌더링 모드를 선택할 때 고려될 수 있다. 예를 들어, 비교적 복잡한 폰트의 경우에 BW 렌더링 모드를 적용하고 내장된 BW 비트맵을 사용하도록 결정할 수 있고, 비교적 덜 복잡한 폰트의 경우에 CT 렌더링 모드를 적용하고 내장된 BW 비트맵을 완전히 무시하도록 결정할 수 있다.
렌더링 모드의 선택은 표시 장치의 모든 가능성을 반드시 완전히 실현하는 것은 아니다. 많은 상황에서, 선택은 소프트웨어에 의해 이루어지고, 상이한 조건 하에서 인간의 눈에 더욱 더 또는 보다 덜 알기 쉬운 상이한 렌더링 모드의 일반 경험에 기초한다. 예를 들어, 저 ppem에서, AA 렌더링 모드는 특히 폰트가 BW 내장 비트맵을 포함하는 경우에, 일반적으로 BW 모드보다 더 낮은 품질의 렌더링 결과를 제공한다. 그러므로, "gasp" 테이블 내의 한 플래그는 대다수의 표시 장치가 그레이 셰이드(shades of gray)를 표시할 수 있더라도, 저 ppem 문자를 렌더링할 때 강제적으로 BW 렌더링 모드가 적용되게 할 수 있다. 그것은 CLEARTYPE®에 관해서도 그러하다. 예를 들어, 표시 장치가 CT 모드에서 렌더링하는 능력을 갖고 있더라도, 내장 BW 비트맵이 폰트에 존재하는 경우에 더 낮은 ppem에서 비교적 복잡한 폰트에 대해 BW 렌더링 모드를 적용하도록 결정할 수 있다. 선택된 렌더링 모드는 최상의 사용자 경험을 제공할 것이고, 다른 렌더링 모드가 더 양호한 렌더링 결과를 제공하는 것으로 보이는 경우에 변경될 수 있다.
현재, 정규 웨이트 및 볼드 웨이트 문자는 다른 모든 조건이 동일하다고 하면 통상적으로 동일한 렌더링 모드에서 렌더링된다. 그러나, 이 결정은 어떤 내부 요구사항도 반영하지 않고, 다른 방법이 더 양호한 렌더링 결과를 생성하는 것으로 보여질 경우에 겹쳐 쓰여질 수 있다.
비트맵 강조를 위한 현재의 알고리즘은 입력과 출력에 대해 보통 동일한 유형의 비트맵을 사용하는데, 이것은 강조 알고리즘의 경우에, 렌더링 모드는 현재 암시적으로 입력 유형과 출력 유형을 설정한다는 것을 의미한다. 그러나, 이 종속성은 일반적으로 필수적인 것은 아니다.
래스터화 프로세스는 정규 및 시뮬레이션된 볼드 웨이트에 대해 동일한 주요 단계를 거친다. 한가지 차이는 시뮬레이션된 강조의 형식이 적용된 경우에, 추가 강조 단계가 래스터화 프로세스에서 사용된다는 것이다. 이 강조 단계는 정규 웨이트를 위해 실행될 수 있는 래스터화의 흐름을 가로채고, 필요한 강조 동작을 실행한 다음에, 꼭 정규 웨이트의 경우에서와 같이 래스터화의 흐름이 계속되게 한다. 그러므로, 이제, 강조 단계가 적절한 래스터화 문맥으로 이해될 수 있도록 정규 웨이트에 대한 래스터화에 관해 약간의 일반적인 배경 설명이 행해질 것이다.
래스터라이저는 폰트의 특별한 특성에 또는 요청되는 상이한 렌더링 조건에 관련된 많은 상이한 파라미터를 받아들일 수 있다. 종래의 시뮬레이션된 강조 모드를 설명하기 위해, 우리는 래스터라이저에 주어진 다음의 입력 정보에 집중할 것이다:
· 요청되는 문자의 식별에 관한 정보(예를 들어, 유니코드 문자 코드).
· 크기(ppem), 동일하지 않은 기하학적 변환의 존재, 시뮬레이션 강조에 대한 요청과 같은 렌더링 조건에 관한 정보. 시뮬레이션 강조가 요청되면, "굵기(heavinss)"(강조의 양) 및 강조의 방향을 식별하는 몇몇 추가 파라미터가 래스터라이저로 보내질 것이다(더욱 상세하게 후술됨).
· 폰트 파일로부터 나오는 정보: 이를테면, 내장된 비트맵이 특정 문자 또는 동일한 조건의 문자들의 합에 대해 존재하는 지의 여부, 특정 문자에 대한 내장된 비트맵 및/또는 아우트라인 데이터의 기술로의 액세스, 특정 ppem에 대해 양호한 렌더링 모드와 같이 디자이너에 의해 지정된 정보.
· (결과적으로 얻은 비트맵의 포맷을 정하는) 렌더링 모드에 관한 정보: 렌더링 모드 BW, AA 또는 CT의 스펙 및 임의의 추가 요구 정보(예를 들어, AA 강조의 경우 - 요청된 수의 그레이 레벨).
래스터라이저는 입력 정보에 기초하여 적절한 래스터화를 실행할 것이고, 결과적으로 얻은 비트맵의 크기 및 위치설정에 관련된 메트릭(metric) 정보와 함께, 요청된 렌더링 모드에 대응하는 포맷으로 결과적인 비트맵을 제공할 것이다.
아래의 양호한 실시예 부분의 상세한 설명에서 설명된 강조 시뮬레이션의 새로운 알고리즘은 반드시 메트릭 정보를 변경하고자 하는 것이 아니기 때문에, 종래의 래스터화 프로세스의 비트맵 출력이 이제 설명될 것이다.
종래의 BW 렌더링에 대한 래스터화 프로세스는 특정 예 및 도 1과 관련하여 이제 설명될 것이다. BW 렌더링 모드에서, 래스터라이저는 일반적으로 내장된 BW 비트맵(존재한다면)을 사용할 것이다. 도 1의 예에서, 유니코드 "GREEK CAPITAL LETTER MU"가 렌더링된다고 하자. 문자 및 요청된 조건에 대한 BW 비트맵이 있으면(도 1에서, 브랜치 "(BW: 내장된 BW 단순 비트맵(Embeded BW Simple Bitmap))"), 내장된 BW 비트맵은 래스터화를 위해 사용된다. 그 다음, 래스터라이저로부터의 BW 값은 래스터라이저 외부의 소프트웨어에 의해 실제 픽셀 컬러에 매핑된다.
문자 및 요청된 조건에 대한 BW 비트맵이 없으면(도 1에서, 브랜치 "(BW: 아우트라인에서 단순 비트맵으로(Outline to Simply Bitmap))"), 단순 비트맵은 주사-변환 알고리즘을 아우트라인에 적용함으로써 폰트에 존재하는 아우트라인 정보를 사용하여 렌더링된다. 존재하는 경우에 내장된 비트맵이 사용되는 이유는 힌팅되 지 않은 폰트의 경우에, 아우트라인의 렌더링에 의해 생성된 비트맵이 일반적으로 내장된 비트맵보다 낮은 품질을 갖기 때문이다.
어느 방법이 사용되든, 최종 출력은 동일한 포맷: 즉, 단순 BW 비트맵을 갖는다. 이 래스터화 프로세스의 중요한 특징은 최종 출력 비트맵의 임의의 중간 계산 단계에서 오버스케일드 비트맵을 사용하지 않는다는 것이다. 모든 계산 단계에서 픽셀 당 하나의 값만 있다.
종래의 AA 렌더링에 대한 래스터화 프로세스는 특정 예와 도 2A 및 도 2B와 관련하여 이제 설명될 것이다. AA 렌더링 모드에서, 래스터라이저는 일반적으로 렌더링될 폰트에 존재하는 경우에 내장된 AA 비트맵(도 2A에서, 브랜치 "(AA: 내장된 AA 단순 비트맵(Embedded AA Simple Bitmap))")을 사용한다. 거의 어떤 폰트도 내장된 AA 비트맵을 갖지 않기 때문에, 브랜치 (AA: 내장된 AA 단순 비트맵(Embedded AA Simple Bitmap))은 거의 실행되지 않는다.
한편, 내장된 비트맵이 문자 및 요청된 조건에 대해 존재하지 않는 경우에, 단순 AA 비트맵은 도 2B에서 브랜치 "(AA: 오버스케일드에서 단순 비트맵으로(Overscaled to Simple Bitmap))"에 계속되는 폰트에 존재하는 아우트라인 정보(도 2A에서, 브랜치 "(AA: 아우트라인에서 오버스케일드 비트맵으로(Outline to Overscaled Bitmap))")를 사용하여 렌더링된다. 래스터화가 아우트라인 정보에서 시작될 때, 래스터화는 2개의 독립된 단계: (AA : 아우트라인에서 오버스케일드 비트맵으로) 및 (AA : 오버스케일드에서 단순 비트맵으로)를 통해 진행된다. 단계 (AA : 아우트라인에서 오버스케일드 비트맵으로) 동안에 사용된 아우트라인 데이터 에 기초한 오버스케일드 비트맵의 계산을 위한 알고리즘 및 단계 (AA : 오버스케일드에서 단순 비트맵으로)동안 단순 AA 비트맵의 최종 값의 계산을 위한 알고리즘은 서로 종속되지 않고, 이들 알고리즘이 요구된 입력 및 출력 포맷으로 동작하는 한 독립적으로 변경될 수 있다.
어느 방법으로든, 최종 출력은 동일한 포맷, 즉, 단순 AA 비트맵을 갖는다. 이 래스터화 프로세스의 중요한 특징은 내장된 AA 비트맵이 없을 때, 래스터화 프로세스가 최종 출력 비트맵의 중간 계산 결과로서 오버스케일드 비트맵을 사용한다는 것이다.
일반적으로 BW 및 AA 렌더링 모드의 각각에 대한 래스터화 프로세스가 설명되었고, 이제 종래의 BW 및 AA 강조 알고리즘에 대해 설명된다. 입력 유형에 의존하여, 강조 시뮬레이션을 위한 알고리즘은 2개의 큰 그룹인 "비트맵 강조" 및 "아우트라인 강조"로 세분된다. 다양한 강조 파라미터 이외에, 비트맵 강조 알고리즘은 그 입력으로서 비트맵을 받아들이지만, 아우트라인 강조 알고리즘은 그 입력으로서 아우트라인을 받아들인다. 비트맵 강조는 그 출력으로서 비트맵을 되돌려보내는 반면, 아우트라인 강조는 비트맵을 생성하기 위해 나중에 주사-변환될 변경된 아우트라인을 되돌려보낸다.
비트맵 및 아우트라인 강조 알고리즘은 래스터화 프로세스의 상이한 단계에서 적용된다. 아우트라인 강조는 래스터화 프로세스가 정규 웨이트를 위해 실행될 수 있기 때문에 항상 래스터화 프로세스의 제1 단계 이전에 적용될 것이다. 아우트라인 강조가 실행된 후, 래스터화는 정규 웨이트의 경우에 하고자 한 그대로 계 속될 것이다.
현재, 아우트라인 강조는 거의 적용되지 않는다. 비트맵 강조는 사소하지 않은 기하학적 변환이 텍스트에 적용되는 드문 경우를 제외하고, 대부분의 상황에서 애플리케이션의 대부분에 의해 실행된다. 비트맵 강조를 적용하는 능력은 내장된 비트맵을 갖는 문자에 의존하지 않는다. 그러므로, 비트맵 강조는 내장된 비트맵을 갖거나 갖지 않는 문자에 적용될 수 있다. 문자가 요청된 조건에 대한 내장된 비트맵을 갖지 않으면, 아우트라인 정보에 기초한 주사-변환의 결과는 비트맵 강조 알고리즘을 위한 입력으로서 쓰일 것이다. 본 발명의 원리는 비트맵 강조에 더 많이 적용되므로, 이제 몇가지 종래의 비트맵 강조 알고리즘이 설명될 것이다.
정의에 의해, 비트맵 강조 알고리즘은 비트맵을 그 입력으로서 받아들이고, 비트맵을 그 출력으로서 되돌려 보낸다. 비트맵 자체 이외에, 비트맵 강조 알고리즘은 일반적으로 강조의 굵기 및 방향에 관한 정보를 받아들인다. 이 정보는 각각 수평 및 수직 방향으로의 한 쌍의 "강조 시프트(emboldening shifts)"에 의해 표현될 수 있다. 강조 시프트는 강조된 비트맵이 원래의 것보다 시각적으로 얼마만큼더 굵어야 되는지(픽셀로 표현) 식별하고, 시프트의 부호는 강조의 방향(우측으로/좌측으로 및 위로/아래로)을 나타낸다. 현재 애플리케이션의 대부분은 픽셀의 전체 수에만 대응하는 강조 시프트로 작업한다. 또한, 저/중 ppem에서 그리고 고 ppem의 더 낮은 범위에서(예를 들어, 약 50 ppem까지), 우측으로 1픽셀(및 수직 방향으로 0 픽셀)만큼 시뮬레이션된 강조가 보통 적용된다.
입력 비트맵은 (내장된 비트맵 또는 글리프의 아우트라인과 같은) 상이한 데 이터로부터 시작될 수 있고, 상이한 방식으로 계산될 수 있다. 입력 비트맵이 계산되는 특정 방식은 비트맵에 적용되는 강조 알고리즘에 무관하다. 중요한 것은 강조 알고리즘에 의해 입력 비트맵의 어떤 포맷이 예상되는가 및 그 알고리즘이 출력 비트맵의 어떤 포맷을 생성할 것인가이다. 그러므로 다양한 강조 알고리즘은 입력 및 출력 비트맵의 포맷에 기초하여 구별될 것이다.
상이한 종류의 비트맵 강조 알고리즘은 래스터화 프로세스의 상이한 단계가 상이한 포맷의 비트맵으로 작업하기 때문에 래스터화 프로세스의 상이한 단계에서 적용될 수 있다. 그러나, 현재 적용된 비트맵 강조 알고리즘은 흔히 (BW, AA 또는 CT 포맷의) 단순 비트맵으로 시작되고, 그 입력과 동일한 포맷의 단순 비트맵을 생성한다.
현재 적용된 비트맵 강조 알고리즘의 대부분은 오버스케일드 비트맵의 계산을 수반하는 래스터화 프로세스 동안에도, 입력 및 출력으로서 단순 비트맵을 사용하여 작업한다. 오버스케일드 비트맵이 계산되면, 강조는 오버스케일드 비트맵이 단순 비트맵으로 변환된 후에 적용된다.
또한, 현재 적용된 비트맵 강조 알고리즘의 대부분은 입력 비트맵 포맷과 정확히 동일한 출력 비트맵 포맷을 갖는다.
더구나, 알고리즘은 종종, 입력 비트맵 내에서 오프되었거나 더 밝은 색을 가진 픽셀의 일부를 턴온시키거나 더 어둡게 하고, 종종 픽셀을 턴오프시키거나 더 밝게 한다.
또한, 종래의 알고리즘은 전형적으로 강조 방향으로 하나의(저/중 ppem의 경 우) 또는 몇개의 이웃하는 픽셀과 같은 입력 비트맵의 국부적 특성에 기초하여 특정 픽셀의 값을 변경할 것인지의 여부를 결정한다. 현재 사용된 알고리즘은 강조에 수직인 방향으로 이웃하는 픽셀의 정보를 사용하지 않는다.
게다가, 종래의 알고리즘은 한 행씩(수평 강조의 경우) 및 한 열씩(수직 강조의 경우) 작업하므로, 알고리즘은 한번에 한 방향(수평 또는 수직)만을 분석한다. 즉, 한 픽셀의 결과적인 값은 행만의 또는 열만의 그 픽셀의 이웃들에 의존하고, 2차원 이웃을 고려하지 않는다.
현재 적용된 비트맵 강조 알고리즘은 수평 또는 수직 방향으로 적용될 수 있다. 수평 및 수직 방향을 위한 알고리즘은 본질적으로 대칭적이고, 방향성만 변경될 뿐이다. 일반적으로, 수평 및 수직 강조를 위한 알고리즘은 섞이지 않는다. 즉, 강조가 양방향으로 적용되어야 한다면, 먼저 한 방향으로 적용되고, 그 다음에 제1 방향의 강조 결과에 다른 방향으로 적용된다.
더구나, 입력 비트맵을 포함하는 직사각형 픽셀 영역 이외에, 알고리즘은 일반적으로, 파라미터로서 인정된 강조 시프트의 값에 의존하여, 직사각형 영역에 인접한 하나 또는 몇개의 행 및/또는 하나 또는 몇개의 열에 영향을 미친다.
저/중 ppem(즉, 약 50 ppem까지)의 경우에, 알고리즘은 일반적으로 우측으로 수평 방향으로 1 픽셀만큼 강조를 적용한다. 저/중 ppem은, 렌더링된 이미지의 품질이 특별히 도전적이고, 현존하는 알고리즘의 개선이 특별히 요구되는 바로 그 영역이라는 것을 알기 바란다.
도 3A에 의해 나타낸 바와 같이, BW 렌더링 모드에서, 종래의 강조 알고리즘 은 입력으로서 BW 단순 비트맵을 받아들이고, 출력으로서 BW 단순 비트맵을 생성한다. 강조 알고리즘은 정규 웨이트의 경우에 적용될 수 있는 그대로(예를 들어, 이 명세서의 도 1 참조) 렌더링 프로세스의 끝에서 실행된다.
구체적으로, 내장된 비트맵이 요청된 조건에 대해 폰트에 존재하면(도 3A에서 예(YES)), 이후 "(BW: 비트맵 단순 정규에서 비트맵 단순 볼드로)"라고도 불리는 BW 강조 알고리즘은 이후 "(BW: 내장된 BW 단순 비트맵)"(도 1의 좌측 절반 참조)라고 불리는 단계의 출력 비트맵에 적용된다. 대안적으로, 내장된 비트맵이 요청된 조건에 대해 폰트에 존재하지 않으면(도 3A에서 아니오(NO)), 단계 (BW: ㅂ비비트맵 단순 정규에서 비트맵 단순 볼드로)는 래스터화가 아우트라인 데이터에 기초하고 있으면 이후 "(BW: 아우트라인에서 단순 비트맵으로)"(도 1의 우측 절반 참조)이라고 불리는 단계 후에 실행된다.
BW 단순 비트맵이 될 입력 및 출력 비트맵을 위한 (BW: 비트맵 단순 정규에서 비트맵 단순 볼드로)에서의 요구사항은 전혀 변하지 않는다. 이들 제약을 조건으로 하여, 강조 알고리즘은 입력 비트맵에서 턴온된(0값을 갖는) 출력 비트맵 내의 픽셀들의 일부를 턴온할 수 있을 뿐이다(즉, 그 픽셀들의 일부에 1을 할당할 수 있다).
예를 들어, 비트맵이 수평 방향으로 우측으로 1픽셀 강조되어야 하는 경우에, 여기에서 "<BW: Alg Standard>"라고 불리는 통상 사용된 알고리즘은 다음과 같이 작업한다. 오리지널 비트맵 내의 모든 행에 대해, "흑색"의(즉, 턴온된) 바로 좌측의 이웃을 갖는 모든 픽셀을 턴온한다.
이 알고리즘의 적용 예는 도 3B 및 도 3C에 도시되는데, 알고리즘의 입력 및 출력은 래스터라이저 외부의 소프트웨어에 의한 흑색 및 백색으로의 매핑 이후에 표시된다. 도 3B로부터 알 수 있는 바와 같이, 알고리즘 <BW: Alg Standard>는 제약을 고려하여 완전히 적당한 동작을 실행한다. 그러나, 도 3C에서의 문자는 동일한 강조 알고리즘을 사용하여 렌더링된다. 도 3C로부터 명백해진 바와 같이, 강조 알고리즘은 문자가 비교적 복잡하면 출력 문자가 인식불가능하게 된다.
도 4A에 의해 나타낸 바와 같이, AA 렌더링 모드에서, 종래의 강조 알고리즘은 입력으로서 AA 단순 비트맵을 받아들이고, 출력으로서 AA 단순 비트맵을 생성한다. 강조 알고리즘은 렌더링 프로세스가 정규 웨이트의 경우에 적용될 수 있는 바와 같이 렌더링 프로세스의 끝까지 기다린다. 구체적으로, 요청된 조건에 대해 AA 비트맵을 갖는 문자의 렌더링의 경우에(도 4A에서의 예), 단순 AA 비트맵은 단계 (AA: 내장된 AA 단순 비트맵)(도 2A의 좌측 절반 참조)에서 나타낸 바와 같이 내장된 AA 비트맵 데이터에 기초하여 생성된다. 한편, 요청된 조건에 대해 AA 비트맵을 갖지 않는 문자의 렌더링의 경우에(도 4A에서의 아니오), 단순 AA 비트맵은 문자의 아우트라인에 기초하여 단계 (AA: 아우트라인에서 오버스케일드 비트맵으로) 및 (AA: 오버스케일드에서 단순 비트맵으로)(도 2A의 우측 절반 참조)를 사용하여 생성된다. 어떤 경우든, 이후 "(AA: 비트맵 단순 정규에서 비트맵 단순 볼드로)"라고 불리는 AA 강조 단계는 출력 비트맵에 적용된다.
이후 "<AA: Alg Standard>"라고 불리는 종래의 AA 강조 알고리즘은 모든 픽셀에 대해 오버스케일 비트맵 내의 턴온된 서브픽셀의 수를 나타내는 단순 AA 비트 맵에서 동작한다. 알고리즘은 단순한 "추가" 원리에 따라 작업하여, 인접한 픽셀에 대해 턴온된 서브픽셀의 수를 모은다. 알고리즘은 픽셀 내부의 서브픽셀의 정확한 위치로 작업하는 것이 아니라, 오히려 픽셀 내의 턴온된 서브픽셀의 수에 관한 누적 정보로 작업한다.
알고리즘이 이들 누적 값만으로 작업하지만, 결과는 종래의 알고리즘에 적당한 자리맞춤(justification)을 제공하는, 한 픽셀 내의 서브픽셀의 수에 의해 오버스케일드 비트맵을 균일하게 강조하는 오버스케일드 비트맵에서 직접 작업할 수 있는 가장 단순한 알고리즘과 매우 유사하다. 그러나, 문제는 더욱 복잡한 문자의 경우에, 현재의 알고리즘이 알기쉬운 결과를 생성하지 않는다는 것이다.
우측으로 1픽셀 강조하는 경우에, 종래의 AA 강조 알고리즘 <AA: Alg Standard>는 다음과 같다:
1) 오리지널 비트맵 내의 모든 행에 대해, 우측에서 좌측으로 진행한다.
2) 모든 픽셀에 대해,
2a) 픽셀 자체의 값에 바로 좌측 이웃의 값을 더한다.
2b) 결과 값이 특정 포맷에서 허용된 최대 값을 초과하면, 최대 값을
픽셀에 할당한다.
알고리즘의 적용 예는 도 4B에 도시된다. 이 예는 정규 웨이트에 대한 AA 모드에서의 렌더링과 관련하여 앞에서(도 2A 및 2B에서) 주어진 "웨이브(wave)" 문자에 관련된 예에 계속된다.
따라서, 유리할 수 있는 것은 복잡한 문자의 경우라도, 강조된 문자가 더욱 알기 쉽고 읽기 쉬운 BW 및 AA 시뮬레이션된 강조 메카니즘이다.
본 발명의 원리는 입력 흑백 비트맵을 강조하는 메카니즘 및 방법에 관한 것이다. 입력 흑백 비트맵을 액세스한 후, 시뮬레이션된 강조는 강조된 앤티-에일리어싱 비트맵을 생성하기 위해 입력 흑백 비트맵을 사용함으로써, 종래의 시뮬레이션된 강조 기술에 비해 강조된 문자의 외관(appearance) 및 가독성(readability)을 개선한다.
본 발명의 추가 실시예는 다음의 설명부분에서 설명될 것이고, 부분적으로 상세한 설명 부분으로부터 명백해질 것이고, 또는 본 발명의 실시에 의해 알게 될 수 있다. 본 발명의 실시예는 첨부된 청구범위에서 특별히 지적된 기구 및 조합에 의해 실현되어 얻어질 수 있다. 본 발명의 이들 및 다른 실시예는 다음의 상세한 설명 및 첨부된 청구범위로부터 더욱 완전히 명백해질 것이고, 또는 이후 설명된 본 발명의 실시에 의해 알게 될 수 있다.
특허 또는 출원 파일은 컬러로 실행된 적어도 하나의 도면을 포함한다. 컬러 도면(들)을 갖는 이 특허 또는 특허 출원 공보의 복사본은 요청하여 필요한 수수료를 지불하면 미합중국 특허청에 의해 제공될 것이다.
본 발명의 상술된 및 그 밖의 다른 장점 및 특징이 얻어질 수 있는 방식을 설명하기 위해, 앞에서 간략하게 설명된 본 발명의 더욱 특별한 설명은 첨부된 도면에 도시된 특정 실시예를 참조하여 제공될 것이다. 이들 도면이 본 발명의 전형 적인 실시예만을 도시하고 있으며, 따라서 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다는 것은 물론이고, 본 발명은 첨부 도면을 사용하여 추가적인 특이성 및 상세가 기술되고 설명될 것이다.
도 1은 흑백 렌더링을 위한 종래의 래스터화 프로세스의 플로우차트를 도시한 도면.
도 2A 및 2B는 앤티-에일리어싱 렌더링을 위한 종래의 래스터화 프로세스의 플로우차트를 도시한 도면.
도 3A는 종래의 흑백 시뮬레이션된 강조 방법을 위한 문맥을 나타낸 플로우차트를 도시한 도면.
도 3B는 단순한 문자가 강조되는 종래의 시뮬레이션된 흑백 강조의 제1 예를 도시한 도면.
도 3C는 복잡한 문자가 강조되는 종래의 시뮬레이션된 흑백 강조의 제2 예를 도시한 도면.
도 4A는 종래의 시뮬레이션된 앤티-에일리어싱 강조 방법을 위한 문맥을 나타낸 플로우차트를 도시한 도면.
도 4B는 단순한 문자가 강조되는 종래의 시뮬레이션된 앤티-에일리어싱 강조의 한 예를 도시한 도면.
도 5는 본 발명의 원리가 실시될 수 있는 예시적인 컴퓨팅 환경을 도시한 도면.
도 6A는 강조될 단순한 흑백 입력 비트맵을 도시한 도면.
도 6B는 흑색 좌측 이웃 픽셀을 갖는 모든 백색 픽셀이 흑색으로 바뀌는 종래의 흑백 시뮬레이션된 강조 방법에 의해 강조된 출력 흑백 입력 비트맵을 도시한 도면.
도 6C는 픽셀이 또한 흑색 우측 이웃 픽셀을 갖지 않는 한, 흑색 좌측 이웃 픽셀을 갖는 모든 백색 픽셀이 흑색으로 바뀌는 종래의 흑백 시뮬레이션된 강조 방법에 의해 강조된 출력 흑백 입력 비트맵을 도시한 도면.
도 7은 개념적으로 16개의 부분으로 세분된 단일 픽셀을 도시한 도면.
도 8A는 3개의 픽셀이 하이라이트된 샘플 입력 흑백 비트맵을 도시한 도면.
도 8B는 중앙 픽셀이 개념적으로 64개의 구성부분으로 세분되는 도 8A의 3개의 하이라이트된 픽셀을 확대도로 도시한 도면.
도 9A는 샘플 입력 흑백 비트맵을 도시한 도면.
도 9B는 본 발명의 원리에 따라 도 9A의 입력 흑백 비트맵에 시뮬레이션된 강조 방법을 적용하여 얻은 강조된 앤티-에일리어싱 출력 비트맵을 도시한 도면.
도 9C는 종래의 시뮬레이션된 흑백 강조의 원리에 따라 도 9A의 입력 흑백 비트맵에 시뮬레이션된 강조 방법을 적용하여 얻은 강조된 흑백 출력 비트맵을 도시한 도면.
도 10은 종래의 시뮬레이션된 강조에 비해 본 발명의 원리에 따른 강조의 실제 결과를 도시한 도면.
도 11A는 입력 3x3 흑백 입력 비트맵을 도시한 도면.
도 11B는 수직 문맥 정보가 강조에서 고려되고, 중앙 픽셀이 16개 분할을 사 용하여 나타내진 본 발명의 원리에 따른 시뮬레이션된 강조 방법으로부터 얻은 결과적인 출력 앤티-에일리어싱 비트맵을 도시한 도면.
도 12A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 12B는 본 발명의 원리에 따라 수직 문맥 정보가 강조에서 고려되는 도 12A의 입력 비트맵에 시뮬레이션된 강조 방법을 적용하여 도시한 도면.
도 12C는 입력 비트맵의 흑색 픽셀이 강조되는 것을 제외하면, 도 12B와 동일한 도면.
도 12D는 지적된 몇가지 특징을 갖는 도 12A의 입력 비트맵을 도시한 도면.
도 13은 "경로"가 가장 좌측 열에 표시된(하이라이트된) 예시적인 흑백 비트맵을 도시한 도면.
도 14A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 14B는 용어 "경로"의 한 정의 하에 정해진 하나의 경로에 속하는 픽셀들이 하이라이트되는 도 14A의 입력 흑백 비트맵을 도시한 도면.
도 14C는 용어 "경로"의 다른 정의 하에 정해진 몇개의 경로에 속하는 픽셀들이 하이라이트되는 도 14A의 입력 흑백 비트맵을 도시한 도면.
도 14D는 용어 "경로"의 세번째 정의 하에 정해진 몇개의 경로에 속하는 픽셀들이 하이라이트되는 도 14A의 입력 흑백 비트맵을 도시한 도면.
도 14E는 용어 "경로"의 네번째 정의 하에 정해진 몇개의 경로에 속하는 픽셀들이 하이라이트되는 도 14A의 입력 흑백 비트맵을 도시한 도면.
도 15A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 15B는 각각 경로로서 쓰이는 2개의 수직 "레그(leg)"를 갖는 도 15A의 예시적인 입력 흑백 비트맵을 도시한 도면.
도 16은 경로 평균의 적용을 위해 하이라이트된 2개의 분리된 "경로"를 갖는 도 14A의 흑백 입력 비트맵을 도시한 도면.
도 17A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 17B는 제1 단계로부터 얻고, 도 17A의 입력 흑백 비트맵에 적용된 시뮬레이션된 강조 알고리즘에 의해 계산된 초기 그레이 레벨 값을 도시한 도면.
도 17C는 입력 이미지가 하이라이트되어 있는, 도 17B와 아주 동일한 결과를 나타낸 도면.
도 17D는 제1 평균 방법의 적용 후를 제외하면, 도 17C와 동일한 출력 비트맵을 도시한 도면.
도 17E는 제2 평균 방법의 적용 후를 제외하면, 도 17C와 동일한 출력 비트맵을 도시한 도면.
도 18은 시뮬레이션된 강조를 위한 문맥을 도시한 플로우차트.
도 19는 문맥 정보에 기초하여 중간 그레이 레벨을 할당하는 문맥 방법의 적용을 나타낸 도면.
도 20A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 20B는 도 20A의 입력 흑백 비트맵에 대한 초기 강조 양의 계산 결과를 도시한 도면.
도 21A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 21B는 본 발명의 원리에 따라 도 21A의 입력 흑백 비트맵에 대한 평균 후의 강조의 결과를 도시한 도면.
도 22A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 22B는 도 22A의 입력 흑백 비트맵에 종래의 시뮬레이션된 강조를 적용한 것을 도시한 도면.
도 22C는 도 22A의 입력 흑백 비트맵에 본 발명의 원리에 따른 시뮬레이션된 강조를 적용한 것을 도시한 도면.
도 23A는 예시적인 입력 흑백 비트맵을 도시한 도면.
도 23B는 "캡 보정(cap correction)"의 적용만 하지 않고, 도 23A의 흑백 비트맵에 본 발명의 원리에 따른 시뮬레이션된 강조를 적용한 것을 도시한 도면.
도 23C는 도 23A의 흑백 비트맵에 본 발명의 원리에 따른 "캡 보정"을 이용하는 시뮬레이션된 강조를 적용한 것을 도시한 도면.
도 24A는 "튜브(tube)"를 갖고 있고, 그 튜브의 종점이 식별되는 예시적인 입력 흑백 비트맵 세그먼트.
도 25는 튜브 트리플릿(triplet)을 갖는 예시적인 입력 흑백 비트맵.
도 26은 "오프닝(opening)"을 갖고 있고, 그 오프닝의 부분이 식별되는 예시적인 입력 흑백 비트맵.
도 27은 용어 캡의 정의에 따라 길이 1의 튜브를 갖고 위로 열려있는 모든 가능한 캡을 도시한 도면.
도 28은 용어 캡의 정의에 따라 길이 2의 튜브를 갖는 위로의 모든 가능한 캡 오프닝을 도시한 도면.
본 발명의 원리는 난해하고 복잡한 문자 및/또는 작은 점 크기로 표시된 문자의 경우라도, 강조된 문자를 위한 명료성 및 가독성을 상당히 개선하는 개선된 시뮬레이션된 강조 메카니즘에 관한 것이다. 시뮬레이션된 강조 방법은 단순 BW 비트맵에서부터 시작하고, 단순 AA 강조 비트맵을 생기게 한다.
본 발명의 상세를 설명하기 이전에, 본 발명의 원리를 구현하기 위해 사용될 수 있는 적합한 컴퓨팅 아키텍처가 도 5와 관련하여 먼저 설명될 것이다. 다음 설명에서, 본 발명의 실시예는 달리 나타내지 않는 한, 하나 이상의 컴퓨터에 의해 실행되는 단계 및 동작의 기호 표현을 참조하여 기술된다. 그 자체로, 컴퓨터-실행으로 때때로 언급되는 그러한 단계 및 동작은 구조 형식으로 데이터를 나타내는 전기 신호의 컴퓨터의 프로세싱 유닛에 의한 조작처리를 포함한다는 것을 알 수 있을 것이다. 이 조작처리는 본 분야에 숙련된 기술자들에 의해 잘 알 수 있는 방식으로 컴퓨터의 동작을 재구성하거나 달리 변경하는 컴퓨터의 메모리 시스템 내의 위치에 데이터를 유지하거나 데이터를 변환한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정해진 특별한 특성을 갖는 메모리의 물리적 위치이다. 그러나, 본 발명의 원리가 상술된 문맥으로 기술되지만, 본 분야의 숙련된 기술자들이라면 이후 설명된 단계 및 동작의 몇몇은 또한 하드웨어로 구현될 수 있다는 것을 알 수 있으므로, 그것은 제한적인 의미가 아니다.
동일한 참조 번호가 동일한 구성요소를 나타내는 도면을 참조하면, 본 발명 의 원리는 적합한 컴퓨팅 환경에서 구현되는 것으로 도시된다. 다음 설명은 본 발명의 도시된 실시예에 기초하고, 여기에서 명시적으로 설명되지 않는 대안적인 실시예와 관련하여 본 발명을 제한하는 것으로 해석되어서는 안된다.
도 5는 이들 장치를 위해 사용가능한 예시적인 컴퓨터 아키텍처의 개략도를 도시한 도면이다. 설명을 위해, 도시된 아키텍처는 단지 적합한 환경의 한 예일 뿐이고, 본 발명의 사용 또는 기능의 범위에 관해 어떤 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 시스템은 도 5에 도시된 구성요소들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명의 원리는 다수의 기타 범용 또는 전용 컴퓨팅 또는 통신 환경 또는 구성과 함께 동작가능하다. 본 발명과 함께 사용하기에 적합한 널리 공지된 컴퓨팅 시스템, 환경 및 구성의 예는 이동 전화, 포켓 컴퓨터, 퍼스널 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 및 임의의 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경을 포함하는데, 이것에 제한되지는 않는다.
그 가장 기본적인 구성에서, 컴퓨팅 시스템(500)은 전형적으로 적어도 하나의 프로세싱 유닛(502) 및 메모리(504)를 포함한다. 메모리(504)는 (RAM과 같은) 휘발성, (ROM, 플래시 메모리 등과 같은) 비휘발성 또는 이 둘의 소정의 조합일 수 있다. 이러한 가장 기본적인 구성은 파선(506)으로 도 5에 도시된다. 이 명세서 및 청구범위에서, "컴퓨팅 시스템"은 기능을 수행하기 위해 소프트웨어, 펌웨어 또는 마이크로코드를 실행할 수 있는 임의의 하드웨어 컴포넌트 또는 하드웨어 컴포 넌트들의 조합으로서 정의된다. 컴퓨팅 시스템은 분산 기능을 달성하기 위해 분산될 수도 있다.
저장 매체 장치는 추가 특징 또는 기능을 가질 수 있다. 예를 들어, 그들은 PCMCIA 카드, 자기 및 광 디스크, 및 자기 테이프를 포함하는(이에 제한되지는 않음) 추가 저장장치(착탈형 및 착탈불가형)를 포함할 수 있다. 그러한 추가 저장장치는 도 5에서 착탈형 저장장치(508) 및 착탈불가형 저장장치(510)로 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈형 및 착탈불가형 매체를 포함할 수 있다. 메모리(504), 착탈형 저장장치(508) 및 착탈불가형 저장장치(510)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disks), 기타 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치, 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 시스템에 의해 액세스될 수 있는 임의의 기타 매체를 포함하는데, 이것에 제한되는 것은 아니다.
여기에서 사용되는 바와 같이, 용어 "모듈" 또는 "컴포넌트"는 컴퓨팅 시스템 상에서 실행되는 소프트웨어 객체 또는 루틴을 칭할 수 있다. 여기에서 설명된 서로 다른 컴포넌트, 모듈, 엔진 및 서비스는 (예를 들어, 분리된 스레드로서) 컴퓨팅 시스템 상에서 실행되는 객체 또는 프로세스로서 구현될 수 있다. 여기에서 설명된 시스템 및 방법이 양호하게 소프트웨어로 구현되지만, 소프트웨어와 하드웨 어 또는 하드웨어로의 구현도 또한 가능하고 고려된다.
컴퓨팅 시스템(500)은 또한 호스트가, 예를 들어 네트워크(520)를 통해 다른 시스템 및 장치와 통신할 수 있게 하는 통신 채널(512)을 포함할 수 있다. 통신 채널(512)은 통신 매체의 예이다. 통신 매체는 전형적으로 반송파 또는 기타 전송 메카니즘과 같은 변조 데이터 신호 내에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하고, 임의의 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와; 음향, 라디오, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하는데, 이것에 제한되지는 않는다. 여기에서 설명된 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 둘다를 포함한다.
컴퓨팅 시스템(500)은 또한 키보드, 마우스, 펜, 음성-입력 컴포넌트, 접촉식-입력 장치 등과 같은 입력 컴포넌트(514)를 가질 수 있다. 출력 컴포넌트(516)는 화면 표시장치, 스피커, 프린터 등, 및 그들을 구동하기 위한 렌더링 모듈(흔히 "어댑터"라고 함)을 포함한다. 컴퓨팅 시스템(500)은 후술되는 임의의 강조 기술에 의해 생성된 강조된 문자를 렌더링하기 위해 출력 컴포넌트(516) 및 관련된 어댑터를 사용할 수 있다. 컴퓨팅 시스템(500)은 전원 공급 장치(518)를 갖는다.
본 발명의 원리가 이용될 수 있는 적합한 컴퓨팅 환경이 설명되었으므로, 이제 본 발명의 원리에 따른 시뮬레이션된 강조 방법이 설명된다. 시뮬레이션된 강조는 일반적으로, 예를 들어 상술된 (<BW: Alg Standard>) 방법과 같이 입력으로서 단순 BW 비트맵을 사용하는 종래의 강조 알고리즘에 비해 강조된 문자의 품질을 개 선시킨다. 이후 설명되는 시뮬레이션된 강조 방법은 내장된 비트맵이 있든 없든 상관없이 성공적으로 폰트에 적용할 수 있다. 더욱이, 이후 설명되는 시뮬레이션된 강조 방법을 위한 출력 이미지에서의 요청된 그레이 레벨의 특정 수는 일반적인 것으로, 아래 나타낸 예들의 대부분이 0, 1, 2, ...16에 대응하는 17개의 그레이 레벨 출력에 대응하겠지만, 그레이 레벨의 임의의 요청된 수에 맞출 수 있다.
시뮬레이션된 강조 방법은 몇가지 일반 원리 하에 동작할 수 있다. 여기에서 <Gen:1>로 언급된 제1 일반 원리에 따르면, 방법은 입력으로서의 단순 BW 정규 비트맵에서 출발해서, (BW보다 오히려) AA 포맷의 단순 비트맵으로서 강조 알고리즘의 출력을 생성한다. 그러므로, 강조 방법의 입력 및 출력은 종래의 시뮬레이션된 강조 방법과 달리 서로 다른 포맷을 가질 수 있다. 이 융통성은 출력 비트맵이 픽셀 당 2개의 이진 값에 제한되지 않기 때문에, 강조 방법의 출력이 더욱 알기 쉽고 읽기 쉽게 될 수 있게 한다.
예를 들어, 출력 비트맵이 BW 비트맵인 종래의 제약을 조건으로 하여 BW 비트맵이 강조될 도 6A를 고려하자. 도 6A의 입력 비트맵은 다른 스트로크로부터 1 픽셀 떨어진 스트로크인 몇개의 수직 평행 스트로크를 갖는다. 이제, 우측으로 1픽셀씩 문자를 강조하라는 요청이 있다고 가정하자. 종래의 "BW to BW" 방법은 각각의 수직 스트로크에서 모든 흑색 픽셀의 우측에 흑색 픽셀을 추가하여 도 6B의 BW 비트맵을 초래할 수 있다. 도 6B로부터 알 수 있는 바와 같이, 이것은 모든 수직 스트로크가 시각적으로 분리되지 않고 합체되기 때문에 문자의 오리지널 디자인을 불명료하게 한다. 대안적으로, 종래의 "BW to BW" 방법은 수직 스트로크들 사 이의 픽셀을 백색으로 놓아두어 도 6C의 BW 비트맵을 초래할 수 있다. 이것은 수직 스트로크를 시각적으로 본래대로 놓아두지만, 강조된 비트맵이 정규 웨이트 비트맵과 매우 유사한 시각적 외관을 갖게 함으로써, 강조의 목적을 헛되게 만든다.
<Gen:1> 원리는 한 픽셀에 대한 셰이딩(shading) 선택의 가능성을 확대하는 것으로, 이것은 입력 비트맵의 요소들 사이의 공간이 충분하지 않은 상황에서 유리하다. 이 원리는 오리지널 디자인을 유지하면서, 강조된 비트맵이 정규 비트맵보다 충분히 더 굵게 보이는 적절한 균형을 가능하게 한다.
"출력" 관점에서, <Gen:1> 원리는 강조 시뮬레이션의 AA 출력(또한, 이 경우에 전체 래스터화 프로세스의 출력임)이 시작점으로서 AA 비트맵에서 시작될 필요가 없다는 것을 허용한다. 앞에 나타낸 바와 같이, 비교적 적은 폰트들은 내장된 AA 비트맵을 포함한다. 더욱이, 정규 웨이트 및 저/중 PPEM의 경우에, AA 모드에서의 렌더링 결과는 BW 모드에서의 렌더링 결과보다 상당히 낮은 품질을 갖는다. 그러므로, 원리 <Gen:1>은 강조 시뮬레이션 방법이 "AA to AA" 강조 방법에서 현재 사용되는 것보다 훨씬 더 양호한 품질의 입력 비트맵에서 시작할 수 있다는 것을 함축하고 있다. EA 폰트, 및 상당한 수의 조밀한/복잡한 문자를 갖는 다수의 다른 폰트가 일반적으로 내장 BW 비트맵을 포함하기 때문에, 적어도, 저/중 ppem에서(대략 10-22 ppem의 범위에서) 가장 복잡한 문자의 경우에, BW 비트맵에서 시작하는 것은 가능한 언제든지 (아우트라인으로부터의 렌더링보다 오히려) 손으로 조정된 비트맵 디자인을 사용할 수 있다는 직접적이고 매우 중요한 장점을 제공한다.
여기에서 <Gen:2>로 불리는 제2의 일반적인 원리는 강조 알고리즘이 입력 BW 비트맵의 요소들 사이의 백색 공간의 완전한 블로킹을 피해야 한다는 것인데, 그것은 그러한 블로킹이 종종 상술된 바와 같이 강조된 문자의 명료성 손실을 초래하기 때문이다. 입력 비트맵의 흑색 픽셀들 사이의 픽셀에 더 밝은 그레이 레벨 값을 할당하는 것은 적어도 부분적으로 그 문제를 해결한다. 입력 비트맵의 흑색 픽셀들 사이에 새로운 흑색 픽셀을 할당하는 것은 복잡한/조밀한 문자에 대한 오리지널 디자인의 손실(전체적 또는 국부적)을 가져올 수 있다. 이와 대조적으로, 그 대신에 그레이 값을 할당하는 것은 입력 비트맵의 요소들 사이의 시각적 분리를 감안하여, 디자인이 전혀 손실되지 않게 한다.
그레이 레벨을 할당함으로써 입력 비트맵의 요소들 사이에 시각적 분리를 유지하는 것은 도 7을 참조하여 설명될 것이다. AA 렌더링 모드에서, 오버스케일드 비트맵에서 단순 AA 비트맵으로의 종래의 변환은 모든 픽셀에 대한 흑색 서브픽셀를 카운트함으로써 행해진다. 즉, 특정 픽셀에 대해, 그레이 레벨은 오버스케일드 비트맵에서 흑색인 픽셀의 분수로부터 얻어진다. 예를 들어, 도 7에서 알 수 있는 바와 같이 수평 및 수직 양방향으로 오버스케일 계수 4의 경우에, 픽셀 당 16개의 서브픽셀이 있다. 도 7에 도시된 흑색 서브픽셀의 구성에서, 흑색 서브픽셀의 수는 9이다. 따라서, 픽셀에 할당된 그레이 레벨은 9/16가 될 것이다.
시각적 분리를 유지하는 강조 알고리즘의 디자인에서, 픽셀은 개념적으로 다수의 서브픽셀로 세분될 수 있다. 이때, 디자이너는 입력 단순 비트맵의 현존하는 요소들 사이의 시각적 분리를 유지하기 위해 "서브픽셀" 비트맵이 어떻게 보일 것인지 상상할 수 있다. 그 다음, 그레이 레벨은 픽셀의 개념적인 서브픽셀 구성을 반영하도록 할당될 수 있다.
예를 들어, 각각의 픽셀이 할당된 17개 그레이 레벨(0에서 16까지) 중의 하나를 가질 수 있다고 가정하자. 이제, 도 8A에 도시된 단순 BW 입력 비트맵의 픽셀 구성이 우측으로 1픽셀 강조된다고 하자. 도 8B는 도 8A의 3개의 하이라이트된 픽셀을 확대하고, 중간 픽셀을 다수의 서브픽셀로 세분한다. 더 굵은 웨이트를 디자인하기 위해, 몇개의 흑색 또는 회색 픽셀이 입력 비트맵의 흑색 픽셀의 우측에 추가될 수 있다. 도 8A의 3개의 하이라이트된 픽셀에 대해, 시각적 분리는 입력 비트맵의 스트로크가 충돌하는 것으로 보이지 않도록 픽셀의 우측 이웃으로부터 3/8의 "거리를 유지하는 것"에 의해 유지될 수 있다고 하자. 우리는 백색 하이라이트된 픽셀을 개념적으로 세분할 수 있고(도 8B의 중앙 픽셀 참조), 시각적 요소들 사이의 거리 유지가 오버스케일드 비트맵에서 어떻게 보일지 상상할 수 있다. 이 경우에, 중앙 픽셀의 5/8는 16의 최대 그레이 레벨의 경우에 할당된 그레이 레벨 값이 10이 되게 할 흑색이 되어야 한다.
다음 예는 원리 <Gen:2>를 따른 단순 강조 알고리즘이 렌더링 결과의 개선된 품질을 고려하는 방법을 나타낸다. 우측으로의 1 픽셀의 강조 시프트가 실행된다고 가정한 예시적인 강조 알고리즘은 다음과 같다.
1) 흑색 좌측 이웃을 갖는 입력 비트맵의 모든 백색 픽셀에 대해,
1a) 픽셀의 우측 이웃이 백색이면 최대 그레이 레벨(흑색에 대응)을
할당, 및
1b) 픽셀의 우측 이웃이 흑색이면 "중간" 그레이 레벨을 할당(오리지
널 비트맵의 2개의 흑색 픽셀들 사이의 공간의 완전한 흑색화를 방
지).
이것은 우리가 백색 픽셀에 의해 분리된 입력 비트맵의 임의의 2개의 흑색 픽셀들 사이에 "대략 1/2 픽셀 가시 거리를 유지하고 있다"는 것을 의미한다. 도 9A 내지 9C는 그 알고리즘의 적용을 나타낸 것이다. 특히, 도 9A는 강조된 입력 BW 비트맵을 나타낸다. 도 9B는 방금 설명된 알고리즘을 사용하는 강조된 AA 비트맵을 나타낸다. 도 9B를 참조하면, 결과적으로 얻은 강조된 AA 비트맵은 완벽하지 않다. 예를 들어, 도 9B의 강조된 AA 비트맵은 스트로크(1)의 상부 부분에 '잘못된 세리프(serif)'를 포함하고, 스트로크(2)의 매우 불균일한 외관을 초래한다. 여전히, 결과는 가시 거리를 유지하지 않는 도 9C에 도시된 <BW: Alg Standard>에 의해 생성된 것보다 훨씬 양호하다.
도 10은 실제 크기에서의 몇개의 복잡한 문자에 대한 렌더링 결과를 보여준다. 제1 (상부) 라인은 정규 비트맵을 나타내고, 제2 라인은 종래의 <BW: Alg Standard>에 따른 강조의 결과를 나타내며, 제3 (하부) 라인은 방금 설명된 강조 방법의 결과를 나타낸다. 제3 라인은 제1 라인보다 더 굵은 시각적 외관을 갖고(따라서 강조를 제공하고), 제3 라인은 오리지널 디자인이 디자인 요소들의 시각적 분리를 통해 대부분 유지되기 때문에 제2 라인보다 훨씬 더 알아보기 쉽다.
강조 방법의 제3 일반 원리는 <Gen:3>으로 언급될 것이다. 원리 <Gen:3>은 알고리즘에 의해 할당된 픽셀의 그레이 스케일 값이 상이한 픽셀에 대해 서로 다를 수 있고, 임의의 종류의 "문맥" 정보에 기초하여 계산될 수 있다는 것인데, "문맥" 은 강조 방향으로의 바로 이웃에 기초한 정보에 또는 임의의 다른 종류의 국부적 이웃에 제한될 필요가 없다. 입력 비트맵의 가변 특징에 대한 조정은 이번에는, 문자의 디자인의 요소들을 유지하고 문자에 특정된 균형잡힌 "굵기"(국부적 또는 전제적)를 유지함으로써 결과적인 비트맵의 개선된 품질을 고려한다.
원리 <Gen:2>와 관련하여 상술된 알고리즘은 픽셀의 우측 이웃에 의존하여 픽셀에 상이한 그레이 값을 할당하기 때문에 실제로 단순한 "문맥" 알고리즘이다. 그러나, 이 알고리즘은 강조 방향으로만 데이터를 분석한다(수평 방향으로의 강조의 경우, 바로 좌측 및 우측 이웃만이 백색 픽셀을 위한 "문맥"으로 고려될 것이다).
2차원 "문맥"(즉, 강조 방향 및 수직 방향으로의 픽셀의 이웃)을 고려한 한 알고리즘은 한 픽셀의 4개의 이웃(좌, 우, 상, 하)을 고려한다. 1 픽셀의 강조 시프트에 따라 우측으로 수평 방향으로 강조하는 경우, 알고리즘은 픽셀에 새로운 값을 할당하기 위해 다음 계산을 적용할 수 있다:
1) 흑색 좌측 이웃을 갖는 백색 픽셀의 경우
1a) 픽셀의 우측 이웃이 백색이면,
최대 그레이 레벨을 할당(즉, 픽셀을 흑색으로 함)
1b) 그렇지 않으면,
할당된 최대 값을 1/4만큼 감소,
픽셀의 상부 이웃이 흑색인 경우에 할당된 최대 값을 추가적으로
3/16만큼 감소, 및
픽셀의 하부 이웃이 흑색인 경우에 할당된 최대 값을 추가적으로
3/16만큼 감소.
이 알고리즘은 수평으로뿐만 아니라 수직으로도 시각적 분리를 고려한다. 도 11A 및 11B는 픽셀의 3x3 어레이 문맥에서 단일 픽셀(중앙 픽셀)로의 이 알고리즘의 기본 적용을 도시한 것이다. 도 11A는 입력 BW 비트맵의 입력 BW 픽셀 구성을 도시한 것이다. 도 11B는 중간 오버스케일드 픽셀 구성을 도시한 것이다. 우리는 도 11B의 중앙 픽셀에 도시된 바와 같이 한 픽셀을 개념적으로 4x4 서브픽셀로 세분할 수 있다. 픽셀이 흑색 우측 이웃을 가지면, 우리는 서브픽셀 백색의 최종(가장 우측) 열을 유지하기를 원한다. 또한, 픽셀이 흑색 상부 또는 하부 이웃을 가지면, 우리는 서브픽셀 백색의 상부 또는 하부 행을 유지할 것이다. 도 11B에 도시된 구성에서, 중앙 백색 픽셀은 (최대 그레이 레벨 값이 16이라고 하면) 값 9가 할당될 것이다.
이 알고리즘에 따라 그레이 레벨 값을 할당하는 예는 도 12A 내지 12D에 도시된다. 도 12A는 입력 비트맵에 대응한다. 도 12B는 방금 설명된 강조 알고리즘을 사용한 강조 결과를 도시한 것이다. 도 12C는 도 12B와 동일한데, 유일한 차이점은 입력 비트맵에서 흑색이던 픽셀을 하이라이트한다는 것이다. 도 12C의 닫힌 영역의 끝부분(도 12D의 픽셀 (1a) 및 (1b))에서 대비 레벨이 더 높고, 입력 비트맵에서 모든 흑색 이웃을 갖는 픽셀(2)의 경우에 대비 레벨이 훨씬 더 높다는 것을 알기 바란다. 또한, 우측으로부터 수직 스트로크(3)에 인접한 백색 픽셀의 어느 것도 흑색 우측 이웃을 갖지 않으므로, 모든 그러한 픽셀들은 흑색으로 된다.
"문맥"에 따라 서브픽셀에 값을 할당하는 시뮬레이션된 강조 방법은 반드시 한 픽셀만의 선정된 국부적 이웃을 고려한 것으로 제한되는 것은 아니어야 된다. 예를 들어, 시뮬레이션된 강조 방법은 정규 비트맵 이미지 내의 수직 스트로크(또는 더욱 일반적으로, 강조 방향에 수직인 스트로크)의 길이를 고려할 수 있고/있거나, 양측으로부터 2개의 스트로크에 의해 인접된 백색 영역의 길이 등을 고려할 수 있다. 입력 비트맵의 더 넓은 영역에 관련된 정보를 사용하는 몇몇 문맥 알고리즘은 <Gen:4A> 및 <Gen:4B>로 언급된 2개의 부차적인 원리를 총칭하여 나타낸 여기에서 <Gen:4>로 언급된 제4 일반 원리와 관련하여 설명될 것이다.
제4 일반 원리의 제1 부차 원리 <GEN:4A>에서, "강조 방향에 수직인 경로" 또는 "경로"는 일반적으로(하지만, 반드시 완전히 또는 인접하게) 강조 방향에 수직인 방향으로의 픽셀의 시퀀스로서 정의된다. 제2 부차 원리 <Gen:4B>는 "경로"를 따른 방향으로의 평균 또는 평활화를 사용한다.
더욱 엄밀하게, "경로"는 (값이 변경될 예정인 픽셀보다 오히려) 강조 결과로서 다른 픽셀(들)의 값이 변경되게 할 수 있는 픽셀의 시퀀스이다. 물론, 이 정의는 단지 설명의 편의상 도입된 것이고, 본 발명의 원리를 벗어나지 않고서 변경될 수 있다.
예를 들어, 도 13의 입력 비트맵 내의 픽셀의 구성(그리고 수평 방향으로 우측으로 강조)에 대해, 하이라이트된 픽셀(도 13의 좌측 열의 3개의 픽셀)은, "경로"의 우측으로의 픽셀의 값이 변경될 예정인 것들이긴 하지만, "경로"를 나타낼 수 있다.
이러한 일반 개념 및 원리를 따르는 알고리즘은 2개의 단계: 1) 초기의 강조 양의 계산 및 2) 평균으로 이루어진다. 제1 단계는 픽셀에 대해 그레이-레벨 값으로 표현된 강조의 양이 계산되게 한다. 제1 단계에서의 강조 양의 계산은 상기 <Gen:2> 및 <Gen:3>과 관련하여 설명된 문맥 알고리즘을 포함하여 임의의 적합한 알고리즘에 의해 실행될 수 있다.
한 픽셀에 대한 초기 강조 양의 계산이 일반적으로 픽셀의 비교적 제한된 이웃에 의존하기 때문에, 강조 방향에 수직인 방향으로 뜻밖의 원하지 않는 예리한 변형이 관측될 수 있다. 예를 들어, 상기 일반 원리 <Gen:2> 및 <Gen:3>과 관련하여 설명된 강조 방법의 결과적인 비트맵을 참조하자. 이들 변형을 평활하게 하고, 강조에 의해 야기된 원하지 않는 시각적 효과를 피하기 위해, 평균하는 제2 단계가 적용된다. 문자의 오리지널 디자인을 보존하기 위해, 입력 비트맵의 각 구조 요소에 적용된 대략 균일한 양의 강조를 유지하는 것이 유리하다. 그러므로, 평균 "경로"가 일반적으로 소정의 구조 요소를 따르는 것이 유리할 수 있다. 그러나, "구조 요소"를 구성하는 것의 해석은 매우 다양할 수 있다. 더욱이, 렌더링된 결과가 매우 작은 크기로 표시되기 때문에, 별개의 요소들의 시각적 혼합 및 시각적 조절은 어차피 우리의 눈에 의해 행해지므로, "구조 요소"의 정의를 위한 더욱 정교한 알고리즘은 더욱 단순한 것보다 구별가능하게 더욱 양호한 품질의 렌더링된 결과를 가져오지 못할 수 있다.
"경로"의 몇가지 예는 도 14B 내지 14E에 제공되는데, 다양한 "경로"가 하이라이트된다. 예에서, 강조가 우측으로 발생한다고 하자. 도 14A는 입력 비트맵을 나타내는 반면에, 도 14B 내지 14E는 다양한 "경로" 정의로부터 얻어질 수 있는 몇가지 하이라이트된 경로의 예를 나타낸다. 예는 단지 제2 열에서 발생할 수 있는 경로를 보여줄 뿐이다. 도 14B에서, 단일 "경로"는 전체 열 내의 모든 흑색 픽셀로서 정의된다(이 "경로"는 불연속일 수 있다). 따라서, 도 14B의 비트맵의 제2 열의 모든 흑색 픽셀이 하이라이트됨으로써 하나의 불연속 경로를 나타낸다. 도 14C에서, "경로"는 흑색 픽셀의 연속적인 수직 시퀀스로서 정의된다. 그러므로, 도 14C에서, 제2 열에 2개의 경로가 있는데, 각 경로는 흑색 픽셀의 각각의 연속적인 수직 시퀀스에 대응한다. 도 14D에서, "경로"는 백색 우측 이웃을 갖는 흑색 픽셀의 연속적인 수직 시퀀스로서 정의됨으로써 제2 열에 4개의 경로를 정한다. 도 14E에서, "경로"는 흑색 픽셀의 연속적인 수평 시퀀스(수평 스트로크)에 의해 경로가 교차되지 않는 한(수평 시퀀스(수평 스트로크)의 길이는 적어도 3임), 흑색 픽셀의 연속적인 수직 시퀀스로서 정의된다. 이것은 도 14E의 제2 열에 3가지 서로 다른 경로를 만들어낸다.
"경로"는 반드시 픽셀의 한방향 시퀀스로서 정의되어야 하는 것은 아니다. 입력 비트맵의 "구조 요소"의 임의의 해석이 "경로"의 정의로서 사용될 수 있다. 예를 들어, 입력 비트맵으로서 도 15A를 가지면, "거의 수직인 스트로크" 인식 알고리즘은 도 15B에 2개의 하이라이트된 픽셀 경로로 표시된 바와 같이 입력 비트맵에 대한 2가지 "경로"를 만들어낼 수 있다.
상술된 바와 같이, 일반 원리 <Gen:4B>를 따른 강조 방법의 제2 단계는 방금 설명된 일반 원리 <Gen:4A>에 의해 정의된 모든 경로에 대해 경로를 따라 평균하는 것을 포함한다. 그러한 평균은 주어진 경로의 강조로 인해 값이 변경될 예정인 모든 픽셀이 소정의 평균 알고리즘 과정을 거칠 것이라는 것을 의미한다. 한 픽셀의 강조 시프트에 따라 우측으로 수평 방향으로 강조하는 경우에, 이것은 각각의 "경로"에 대해, 입력 비트맵에서 백색이었고, 경로를 형성하는 픽셀의 바로 우측 이웃인 모든 픽셀에 평균이 적용될 것이라는 것을 의미한다. 예를 들어, 도 16의 입력 비트맵의 제2 열에서 강조된 상부 경로의 경우에, 제3 열의 모든 "점이 있는" 픽셀에 평균이 적용될 것이다.
평균 자체는 임의의 평균 알고리즘에 따라 실행될 수 있다. 그러한 평균 알고리즘의 예는 균일한 평균 또는 상이한 웨이트를 갖는 평균을 포함할 수 있다. 평균은 전체 "경로"를 따라 발생하거나, 또는 한 픽셀의 몇몇 이웃에 대해서만 발생할 수 있다. 평균은 평균화되거나 평균화되지 않는 픽셀들의 시퀀스의 불연속성 등을 고려할 수 있다.
아래의 예에서, 도 17A는 입력 비트맵에 대응한다. 도 17B는 제1 단계로부터 얻어지고 <Gen:3>과 관련하여 설명된 알고리즘에 의해 계산된 초기 그레이 레벨 값을 나타낸다. 도 17C는 도 17B와 아주 동일한 결과를 나타낸 것으로, 입력 이미지가 하이라이트된다. 수직 스트로크(1)의 상부에서의 "잘못된 세리프" 및 강조 후의 스트로크(2)의 불균일한 외관에 주의하자. 도 17D 및 17E는 평균 결과를 나타낸다. 이 둘의 경우에, "경로"는 흑색 픽셀의 임의의 연속적인 수직 시퀀스로서 정의된다. 도 17D는 경로를 따른 균일한 평균에 대응한다 - 평균의 결과로서, 문자의 디자인은 평균이 사용되지 않을 때보다 강조된 비트맵에서 더 양호하게 표시 된다는 것을 알기 바란다. 도 17E는 한 픽셀 및 상이한 웨이트를 갖는 그 픽셀의 2개의 상부 및 하부 이웃에 대한 초기 그레이 레벨의 평균에 기초하여 픽셀의 그레이 레벨 값을 계산하는 다른 평균 방법에 대응한다 - 평균은 더 어두운 영역에서 약간의 대비를 유지하면서 도 17B에 나타낸 것보다 전체적으로 훨씬 더 평활한 결과를 제공한다.
시뮬레이션된 강조 방법이 입력으로서 단순 BW 비트맵을 사용하기 때문에, 그 방법은 단순 BW 비트맵이 (정규 웨이트에 대한) BW 모드에서의 표준 래스터화 프로세스의 끝에서 이용가능하게 된 후에(예를 들어, 도 18에서의 (BW to AA: 비트맵 단순 정규에서 비트맵 단순 볼드로) 단계 참조) 래스터화 프로세스에서 실행된다. 래스터화 프로세스의 다른 단계에 대한 (주요) 변경은 요구되지 않는다. 그러나, 래스터라이저의 특정 구현에 의존하여, 몇가지 사소한 변경은 강조 알고리즘의 출력의 AA 포맷을 지원하기 위해 요구될 수 있다. 예를 들어, 래스터라이저는 오로지 BW 이진 비트보다 오히려 전체 그레이 레벨 값을 되돌려 보낼 수 있도록 하기 위해 더 많은 메모리 할당을 요구할 수 있다.
BW 모드에서 현재 적용된 강조와의 중요한 차이점은 새로운 알고리즘이 (<Gen:1>에 따라) BW 포맷보다 AA 포맷으로 출력 비트맵을 생성한다는 것이다. 강조가 래스터화 프로세스의 마지막 단계에서 실행되기 때문에, 출력 포맷은 래스터라이저 자체에는 상관없다. 그러나, 렌더링 엔진은 비트맵을 정확하게 해석하여 대응하는 그레이 셰이드로의 비트맵 값의 매핑을 실행할 수 있기 위해, 래스터라이저에 의해 생성된 결과적인 비트맵의 AA 포맷을 알아야 된다.
일반 개념 및 원리 <Gen:1>, <Gen:2>, <Gen:3>, <Gen:4>를 따르는 알고리즘의 특정 파라미터 패밀리 <F1>이 이제 설명될 것이다. 더욱 특정된 몇가지 개념을 구성하는 것 이외에, 알고리즘 패밀리는 특정 동작 순서를 기술한다. 이 알고리즘 패밀리를 위한 파라미터의 가능한 선택(즉, 패밀리로부터의 특정 알고리즘)이 이제 설명되고, 새로운 알고리즘과 현재 통상적으로 적용된 알고리즘 사이의 비교가 제공된다.
파라미터 패밀리는 다음 파라미터 세트 및 다음 동작 순서에 의해 정의된다.
<F1:Step:1>로 언급된 제1 단계에서, 임의의 종류의 사전 처리 알고리즘은 입력 비트맵에 적용된다(적용되는 어떤 사전 처리 알고리즘도 유효한 선택은 아니다). 사전 처리 알고리즘의 선택은 패밀리로부터 특정 알고리즘을 식별하기 위해 정의되어야 하는 제1 파라미터 <F1:Par:1>이다. 현재의 알고리즘 패밀리에 대해, 명확성을 위해, 우리는 사전 처리 알고리즘(만약 있다면)이 단순 BW 비트맵을 만들어 낸다고 가정하겠다.
<F1:Step:2>로 언급된 제2 단계에서, 초기 강조 양이 계산된다. <F1>은 픽셀의 "4-인접 이웃"에 기초하여 초기 강조 양을 계산하는 다음의 문맥 알고리즘(<Gen:3>을 참조)을 사용한다. 알고리즘은 <Gen:3>과 관련하여 설명된 것과 유사하다. 다시 한번, 우리는 1픽셀의 강조 시프트에 따라 우측으로 수평 방향으로의 강조를 가정한다. 값이 변경되어야 하는 픽셀에 대해(즉, 흑색 좌측 이웃을 갖는 픽셀에 대해), "반발력"은 초기 입력 비트맵의 구조 요소들 사이의 가시 거리를 유지하기 위해 계산된다. "반발력"의 값은 최대(즉, 가장 어두운) 그레이 레벨에 관한 강조된 픽셀의 어두움을 어느 정도 감소시킬 것인지(즉, 밝음을 어느 정도 증가시킬 것인지)에 의해 규정지을 것이다. "반발력"의 계산을 위한 특정 공식의 선택은 파라미터 패밀리의 제2 파라미터 <F1:Par:2>를 나타낸다.
<F1:Step:3>으로 언급된 제3 단계에서, 평균 "경로"가 정의되고, 평균 알고리즘은 모든 평균 "경로"를 따라 적용된다(<Gen:4> 참조). 평균 "경로"의 특정 정의 및 평균 알고리즘의 특정 선택은 파라미터 패밀리의 제3 및 제4 파라미터 <F1:Par:3> 및 <F1:Par:4>를 규정짓는다. "무 평균"은 <F1:Par:4>에 대한 유효한 선택이다.
<F1:Step:4>로 언급된 제4 단계에서, 모든 평균 "경로"에 대해, "경로"를 따른 모든 픽셀의 결과적인 평균 값이 할당된다.
<F1:Step:5>로 언급된 제5 단계에서, 임의의 사후 처리 알고리즘은 결과적인 AA 비트맵에 적용된다. <F1:Step:5>에서 적용될 무 사후처리 알고리즘을 선택하는 것이 유효하다. 특정 사후처리 알고리즘의 선택은 파라미터 패밀리의 파라미터 <F1:Par:5>를 규정짓는다.
알고리즘 패밀리 <F1>로부터의 특정 알고리즘의 예가 이제 설명될 것이다. 상술된 특정 알고리즘의 파라미터는 상이한 파라미터가 적용된 상술된 알고리즘 패밀리로부터의 알고리즘의 출력 결과의 시각적 비교 후에 선택되었다. 목표 중의 하나는 결과의 품질과 적용된 알고리즘의 복잡도 사이에 균형을 이루는 것이었다. 파라미터의 특정 선택이 아래 설명된다.
제1 알고리즘 파라미터 <F1:Par:1>(즉, 사전처리 단계)에 대해, "캡(cap)-보 정" 알고리즘이 적용된다(아래의 설명 참조).
제2 알고리즘 파라미터 <F1:Par:2>(즉, "반발력"을 위한 특정 공식의 정의)에 대해, 정의는 다음과 같다: 강조 동안에 값이 변경되어야 하는 임의의 픽셀의 경우에, 픽셀이 강조 방향으로 흑색 이웃을 가지면 - 할당된 최대 그레이 값을 최대 그레이 값의 4/16만큼 감소시키고, 강조 방향에 수직인 방향으로의 흑색 이웃의 모든 픽셀의 경우에, 할당된 최대 그레이 값을 최대 그레이 값의 추가 3/16만큼 감소시킨다.
1 픽셀의 강조 시프트에 따라 우측으로 수평 방향으로의 강조의 경우에, 결과적인 초기 강조 알고리즘은 다음과 같이 요약될 수 있다:
픽셀이 백색이고 그 좌측 이웃이 흑색이면
{
그 우측 이웃이 백색이면
{
반발력을 적용하지 않는다;
}
그렇지 않으면
{
4/16의 반발력을 적용하고,
상부 이웃이 흑색이면 추가 3/16 적용하며,
하부 이웃이 흑색이면 추가 3/16 적용한다
}
}
초기 백색 픽셀에 대한 상술된 예시적인 알고리즘의 최종적인 할당 값은 도 19의 6가지 상이한 픽셀 구성에 표시된다. 도 19의 예는 17개의 그레이 레벨(0...16)을 가정한다. 상술된 공식에 의한 초기 강조 양의 계산 결과는 도 20A 및 20B에 도시되는데, 도 20A는 입력 비트맵을 나타내고, 도 20B는 평균 전의 강조의 결과에 대응한다.
제3 알고리즘 파라미터<F1:Par:3>(즉, 평균 "경로"의 정의)의 경우에, "경로"는 강조 방향에 수직인 방향으로의 흑색 픽셀의 연속적인 시퀀스로서 정의된다.
제4 알고리즘 파라미터<F1:Par:4>(즉, 평균 알고리즘의 정의)의 경우에, 할당된 그레이 레벨 값의 균일한 평균은 강조 방향으로의 경로 측을 따라 백색 픽셀에 적용된다. 1 픽셀의 강조 시프트에 따라 우측으로 수평 방향으로의 강조를 위해, 평균 알고리즘은 다음과 같이 정의될 수 있다:
"경로" 내의 픽셀로부터 바로 우측에 있는 (입력 비트맵 내의) 백색 픽셀의
수를 계산하는데, 이 수를 NumWhite라 하자.
"경로"를 따른 (입력 비트맵 내의) 모든 백색 픽셀에 대한 "반발력"의
합으로서 총 "반발력"을 계산하는데, 이 수를 NegTotal이라 하자.
평균 값 LevelMax-(LevelMax*(NegTotal/NumWhite))를 계산하는데,
LevelMax는 그레이 레벨의 최대값이다.
이 평균 값을 "경로"를 따른 모든 백색 픽셀에 할당한다.
도 21A의 오리지널 비트맵에 초기 강조 및 이 평균의 적용 결과는 (적용되는 "캡-보정"의 사전 처리 없이) 도 21B에 도시된다.
제5 알고리즘 파라미터<F1:Par:5>(즉, 사후 처리의 식별)은 어떤 사후 처리도 적용되지 않는다는 것을 식별한다.
방금 앞에서 설명된 특정 알고리즘의 렌더링 결과는 상당 수의 복잡하고 조밀한 문자를 포함하는 폰트를 위한 현재 통상적으로 적용된 BW 강조 알고리즘보다 훨씬 더 알기 쉽다. 예를 들어, 도 22A는 입력 비트맵을 나타낸다. 현재 통상적으로 적용된 BW 강조 알고리즘에 따른 강조의 결과는 도 22B에 도시된다. 완전히 대조적으로, 특정예 <F1> 알고리즘에 따른 강조의 결과는 도 22C에 도시된다. 명백하게, 도 22C의 볼드된 문자는 도 22A의 문자에 대해 도 22B보다 훨씬 더 많이 알아볼 수 있는 강조된 이미지이다.
"캡-보정"의 사전처리 단계가 이제 설명될 것이다. "캡-보정"알고리즘의 이유는 경사진 스트로크들 사이의 접합부에 있는 좁은 "캡"들을 제거하기 위한 것이고, 그렇게 하지 않으면 강조 후에 접속된 스트로크들의 시각적 불연속성을 야기할 것이다. 다음 설명 및 예는 우측으로 1 픽셀만큼의 수평 강조에 대한 "캡 보정"을 나타낸 것이다. "캡 검출" 및 "캡 보정"에 대한 동일한 기본 알고리즘 방법은 강조를 위한 다른 방향에 적용될 수 있다. 예를 들어, 도 23A의 입력 비트맵이 우측으로 1 픽셀 강조된다고 하자. 도 23A의 정규 이미지에 적용된 "캡-보정"이 없는 (패밀리 <F1>로부터의) 예시적인 비트맵 강조 알고리즘은 도 23B의 강조된 비트맵을 초래할 것이다. 도 23B의 비트맵은 (우측에서 더 길고 좌측에서 더 짧은) 2개 의 분리된 스트로크로 이루어져 있는 것처럼 보이지만, 스트로크들은 정규 비트맵에서 접속되어 있었다. (이 가시적인 불연속성을 갖는) 도 23B의 강조된 비트맵 이미지는 도 23A의 정규 웨이트 비트맵에서 나타낸 것보다 완전히 다른(의미적으로 다른) 문자로서 잘못 해석(잘못 판독)될 수 있다. "캡-보정" 알고리즘은 경사진 접속된 스트로크들 사이의 좁은 접합부를 식별하고, 강조된 이미지 내에서의 가시적인 불연속성을 방지한다. "캡-보정"이 적용된 새로운 강조 알고리즘은 도 23C의 비트맵을 만들어낼 것이다.
"캡-보정" 알고리즘을 기술하기 위해, 우리는 몇가지 정의를 사용할 것이다. "튜브(tube)"는 흑색 픽셀이 좌우측에 접해 있는 입력 비트맵 내의 백색 픽셀들의 연속적인 1열 폭의 수직 시퀀스이다. 도 24의 픽셀 구성에 도시된 튜브는 흑색 픽셀에 의해 상부가 닫혀있고 하부가 열려있는 튜브를 나타낸다. 주어진 열 C에 대한 행 R은 행 R과 열 C에서의 픽셀이 백색이고, 좌우측 이웃이 흑색이면 "튜브 트리플릿(triplet)"에 대응한다. "튜브 트리플릿"에 대응하는 행의 예는 도 25에 도시된다.
더 나아가, 이제 "오프닝(openng)"이 설명될 것이다. 각각 튜브의 좌측과 우측을 따라가는 흑색 픽셀의 2개의 체인(좌측 및 우측)이 있다. 좌측 체인의 흑색 픽셀은 튜브의 한 단부로부터 연장되고, 수직으로(또는 좌측으로 대각선으로) 연결되는 다른 흑색 픽셀이 있는 한, 수직으로 계속된다. 우측 체인의 흑색 픽셀은 튜브의 한 단부로부터 연장되고, 수직으로(또는 우측으로 대각선으로) 연결되는 다른 흑색 픽셀이 있는 한, 좌측 튜브와 동일한 방향으로 수직으로 계속된다. "오 프닝"은 여전히 좌우측 체인이 접해있는 튜브 바깥의 영역이다. 오프닝은 좌우측 체인이 튜브의 열린 단부로부터 카운트하여 적어도 L개의 픽셀을 포함하면 (적어도) 길이 L로 되어 있다고 일컬어진다. 특정 행에서의 오프닝의 폭은 그 특정 행의 우측 체인과 좌측 체인 사이의 백색 픽셀의 수이다. 오프닝의 예는 도 26에 도시된다. 그 예에서, 오프닝은 길이 2의 튜브의 오프닝으로부터 연장되는 길이 3을 갖는다. 오프닝은 위에서부터 세번째 행에서 2의 폭, 위에서부터 두번째 행에서 3의 폭, 및 첫번째(상부) 행에서 4의 폭을 갖는다.
"캡"은 "오프닝"에 선행된 "튜브"이다. 캡 보정 알고리즘은 다음 기준이 만족되면 캡을 검출할 것이다. 먼저, 한 수직 단부에서 닫혀있는 길이 1 또는 2의 튜브가 발견된다. 튜브의 다른 단부에서 오프닝이 발견되는데, 그 오프닝은 튜브의 열린 단부로부터 카운트하여 첫번째 행에서 적어도 2개의 픽셀 폭이 있다. 튜브 또는 오프닝을 정하는 흑색 픽셀과 (대각선으로도) 접촉하는 오프닝의 내부에서 어떤 흑색 픽셀도 발견되지 않는다. 도 27은 길이 1의 튜브를 갖고 위로 열려있는 모든 가능한 "캡"을 도시한 것이다. 도 28은 길이 2의 튜브를 갖고 위로 열려있는 모든 가능한 "캡"을 도시한 것이다.
"캡-보정" 알고리즘은 다음과 같이 동작한다.
1) 오리지널 정규 비트맵에서, (강조 방향과 대응하는) 모든 "캡"을
검출한다.
2) 모든 "캡"에 대해, 선정된 어두운 그레이 셰이드(본 구현에서 흑색)로
그 "튜브" 내를 채운다.
따라서, 방금 설명된 시뮬레이션된 강조 방법은 오리지널 BW 비트맵의 강조된 비트맵을 생성하는 개선된 방법을 제공한다. 본 발명은 그 정신 또는 근본적인 특성을 벗어나지 않고서 다른 특정 형태로 구현될 수 있다. 설명된 실시예는 모든 점에서 단지 예시적인 것으로 간주되어야지 제한적인 것으로 간주되어서는 안된다. 그러므로, 본 발명의 범위는 상기 설명에 의해서라기 보다 첨부된 청구범위에 의해 나타내진다. 청구범위와 동등한 의미 및 범위에 드는 모든 변경은 본 발명의 범위 내에 포함될 수 있다.
Claims (22)
- 문자들을 렌더링하는 경우에 폰트의 문자들의 강조 시뮬레이션(simulated emboldening)을 수행하기 위한 컴퓨터 구현 방법으로서,폰트가 상기 폰트의 하나 이상의 문자들에 대해 내장된 흑백 비트맵(embedded Black and White bitmap)들을 포함하는지의 여부를 판정하는 액트(act) - 만약 포함하는 경우에는, 상기 폰트의 하나 이상의 문자들에 대해상기 비트맵들로부터의 데이터를 입력하고,만약 포함하지 않는 경우에는, 상기 폰트의 하나 이상의 문자들에대해 아우트라인(outline) 데이터를 입력함 - ;입력된 데이터가 내장된 비트맵으로부터 유래한 것인지 또는 아우트라인 데이터로부터 유래한 것인지에 관계없이, 상기 입력된 데이터로부터 상기 폰트의 문자들에 대한 흑백 비트맵을 생성하는 액트;상기 흑백 비트맵을 액세스하는 액트;상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱(emboldened Anti-Aliasing) 비트맵을 생성하고, 그 결과 픽셀 당 단순히 2개의 이진값에 한정되도록 요구하지 않음으로써 픽셀에 대해 가능한 셰이딩(shading) 선택의 수를 확장하는 액트; 및상기 앤티-에일리어싱 비트맵의 값들을 상기 폰트의 하나 이상의 문자들에 대한 디스플레이의 픽셀들에 맵핑하는 액트를 포함하며,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는, 대응하는 입력 픽셀이 백색인 출력 픽셀들 중 적어도 하나에 대해,상기 대응하는 입력 픽셀에 대한 좌측 이웃 입력 픽셀이 흑색인 것으로 판정하는 액트;상기 대응하는 입력 픽셀에 대한 우측 이웃 입력 픽셀이 흑색인 것으로 판정하는 액트; 및상기 판정하는 액트들에 응답하여 상기 출력 픽셀에 중간 그레이 레벨을 할당하는 액트를 포함하는 컴퓨터 구현 방법.
- 삭제
- 제1항에 있어서,상기 중간 그레이 레벨은,상기 대응하는 입력 픽셀에 대한 상부 이웃 입력 픽셀이 백색인지 또는 흑색인지를 판정하는 액트; 및상기 대응하는 입력 픽셀에 대한 상부 이웃 입력 픽셀이 흑색으로 판정되면, 상부 이웃 입력 픽셀이 백색으로 판정된 경우에 할당되었을 수 있는 것보다 더 밝은 중간 그레이 레벨을 할당하는 액트를 수행함으로써 할당되는 컴퓨터 구현 방법.
- 제3항에 있어서,상기 중간 그레이 레벨은,상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 백색인지 또는 흑색인지를 판정하는 액트; 및상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 흑색으로 판정되면, 하부 이웃 입력 픽셀이 백색으로 판정된 경우에 할당되었을 수 있는 것보다 더 밝은 중간 그레이 레벨을 할당하는 액트를 수행함으로써 할당되는 컴퓨터 구현 방법.
- 제1항에 있어서,상기 중간 그레이 레벨은,상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 백색인지 또는 흑색인지를 판정하는 액트; 및상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 흑색으로 판정되면, 하부 이웃 입력 픽셀이 백색으로 판정된 경우에 할당되었을 수 있는 것보다 더 밝은 중간 그레이 레벨을 할당하는 액트를 더 수행함으로써 할당되는 컴퓨터 구현 방법.
- 제5항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 컴퓨터 구현 방법.
- 제4항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 컴퓨터 구현 방법.
- 제3항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 컴퓨터 구현 방법.
- 제1항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 컴퓨터 구현 방법.
- 제1항에 있어서,상기 맵핑되고 강조된 앤티-에일리어싱 비트맵의 상기 하나 이상의 문자들을 디스플레이 상에 표시하는 액트를 더 포함하는 컴퓨터 구현 방법.
- 제1항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 입력 비트맵 내의 경사진 스트로크(stroke)들 사이의 접합부들 내에서 강조 방향에 대응하는 적어도 하나의 좁은 캡(cap)의 존재를 판정하는 액트; 및상기 적어도 하나의 좁은 캡의 각각의 튜브(tube)를 구성하는 입력 픽셀들에 흑색 값을 할당하는 액트를 포함하는 컴퓨터 구현 방법.
- 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 시스템으로 하여금, 문자들을 렌더링하는 경우에 폰트의 문자들의 강조 시뮬레이션(simulated emboldening)을 수행하기 위한 방법을 수행하게 하는 컴퓨터 실행가능 명령어들을 갖는 하나 이상의 컴퓨터 판독가능 기록 매체로서,상기 방법은,폰트가 상기 폰트의 하나 이상의 문자들에 대해 내장된 흑백 비트맵들을 포함하는지의 여부를 판정하는 액트 - 만약 포함하는 경우에는, 상기 폰트의 하나 이상의 문자들에 대해 상기 비트맵들로부터의 데이터를 입력하고,만약 포함하지 않는 경우에는, 상기 폰트의 하나 이상의 문자들에대해 아우트라인(outline) 데이터를 입력함 - ;입력된 데이터가 내장된 비트맵으로부터 유래한 것인지 또는 아우트라인 데이터로부터 유래한 것인지에 관계없이, 상기 입력된 데이터로부터 상기 폰트의 문자들에 대한 흑백 비트맵을 생성하는 액트;상기 흑백 비트맵을 액세스하는 액트;상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하고, 그 결과 픽셀 당 단순히 2개의 이진값에 한정되도록 요구하지 않음으로써 픽셀에 대해 가능한 셰이딩 선택의 수를 확장하는 액트; 및상기 앤티-에일리어싱 비트맵의 값들을 상기 폰트의 하나 이상의 문자들에 대한 디스플레이의 픽셀들에 맵핑하는 액트를 포함하며,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는, 대응하는 입력 픽셀이 백색인 출력 픽셀들 중 적어도 하나에 대해,상기 대응하는 입력 픽셀에 대한 좌측 이웃 입력 픽셀이 흑색인 것으로 판정하는 액트;상기 대응하는 입력 픽셀에 대한 우측 이웃 입력 픽셀이 흑색인 것으로 판정하는 액트; 및상기 판정 액트들에 응답하여 상기 출력 픽셀에 중간 그레이 레벨을 할당하는 액트를 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 삭제
- 제12항에 있어서,상기 중간 그레이 레벨은,상기 대응하는 입력 픽셀에 대한 상부 이웃 입력 픽셀이 백색인지 또는 흑색인지를 판정하는 액트; 및상기 대응하는 입력 픽셀에 대한 상부 이웃 입력 픽셀이 흑색으로 판정되면, 상부 이웃 입력 픽셀이 백색으로 판정된 경우에 할당되었을 수 있는 것보다 더 밝은 중간 그레이 레벨을 할당하는 액트를 수행함으로써 할당되는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제14항에 있어서,상기 중간 그레이 레벨은,상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 백색인지 또는 흑색인지를 판정하는 액트; 및상기 대응하는 입력 픽셀에 대한 하부 이웃 입력 픽셀이 흑색으로 판정되면, 하부 이웃 입력 픽셀이 백색으로 판정된 경우에 할당되었을 수 있는 것보다 더 밝은 중간 그레이 레벨을 할당하는 액트를 수행함으로써 할당되는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제15항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제14항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제12항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 대응하는 출력 픽셀들에 중간 그레이 레벨을 적용하는 액트들의 구현으로 인해 상기 출력 픽셀들을 포함하는 다른 픽셀들의 값들이 강조되게 하는 일반적으로 강조 방향에 수직인 방향으로 픽셀들의 시퀀스의 경로를 식별하는 액트; 및상기 대응하는 출력 픽셀들에 할당된 중간 그레이 레벨들의 평균을 적용하여 상기 대응하는 출력 픽셀들에 대한 최종 중간 그레이 레벨을 생성하는 액트를 더 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제12항에 있어서,상기 방법은,상기 맵핑되고 강조된 앤티-에일리어싱 비트맵의 상기 하나 이상의 문자들을 디스플레이 상에 표시하는 액트를 더 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 제12항에 있어서,상기 흑백 비트맵을 이용하여 강조된 앤티-에일리어싱 비트맵을 생성하는 액트는,상기 입력 비트맵 내의 경사진 스트로크들 사이의 접합부들 내에서 강조 방향에 대응하는 적어도 하나의 좁은 캡의 존재를 판정하는 액트; 및상기 적어도 하나의 좁은 캡의 각각의 튜브를 구성하는 입력 픽셀들에 흑색 값을 할당하는 액트를 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US64086804P | 2004-12-30 | 2004-12-30 | |
US60/640,868 | 2004-12-30 | ||
US11/158,503 US7286269B2 (en) | 2004-12-30 | 2005-06-22 | Use of an input black and white bitmap to generate emboldened anti-aliasing bitmap |
US11/158,503 | 2005-06-22 | ||
PCT/US2005/046540 WO2006073858A2 (en) | 2004-12-30 | 2005-12-20 | Use of an input black and white bitmap to generate emboldened anti-aliasing bitmap |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070093431A KR20070093431A (ko) | 2007-09-18 |
KR101159387B1 true KR101159387B1 (ko) | 2012-07-09 |
Family
ID=36640056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077016576A KR101159387B1 (ko) | 2004-12-30 | 2005-12-20 | 강조된 앤티-에일리어싱 비트맵을 생성하기 위한 입력 흑백비트맵의 사용 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7286269B2 (ko) |
JP (1) | JP5490360B2 (ko) |
KR (1) | KR101159387B1 (ko) |
WO (1) | WO2006073858A2 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080181531A1 (en) * | 2007-01-25 | 2008-07-31 | Monotype Imaging Inc. | Emboldening glyphs without causing conglutination |
JP5158752B2 (ja) * | 2007-05-10 | 2013-03-06 | シャープ株式会社 | 表示制御装置、表示装置、表示制御プログラム、コンピュータ読み取り可能な記録媒体、および表示制御方法 |
US8965135B2 (en) * | 2008-03-19 | 2015-02-24 | Conexant Systems, Inc. | Flexible cadence follower for film in video |
US10140268B2 (en) * | 2015-08-27 | 2018-11-27 | Qualcomm Innovation Center, Inc. | Efficient browser composition for tiled-rendering graphics processing units |
US20230367952A1 (en) * | 2021-12-06 | 2023-11-16 | Read TwoGether Ltd. | Reducing interference between two texts |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438273B1 (en) * | 1998-12-23 | 2002-08-20 | Xerox Corporation | Method and apparatus for using rotatable templates within look-up tables to enhance image reproduction |
KR100324879B1 (ko) | 1999-02-01 | 2002-02-28 | 마찌다 가쯔히꼬 | 문자 표시 장치, 문자 표시 방법 및 기록 매체 |
JP3552094B2 (ja) * | 1999-02-01 | 2004-08-11 | シャープ株式会社 | 文字表示装置、文字表示方法および記録媒体 |
JP2003076357A (ja) * | 2001-09-06 | 2003-03-14 | Ricoh Co Ltd | 文字処理装置、文字処理方法、およびそのプログラム |
US7136541B2 (en) | 2002-10-18 | 2006-11-14 | Sony Corporation | Method of performing sub-pixel based edge-directed image interpolation |
US7342585B2 (en) | 2004-12-30 | 2008-03-11 | Microsoft Corporation | Use of an input overscaled bitmap to generate emboldened overscaled bitmap |
-
2005
- 2005-06-22 US US11/158,503 patent/US7286269B2/en not_active Expired - Fee Related
- 2005-12-20 JP JP2007549491A patent/JP5490360B2/ja not_active Expired - Fee Related
- 2005-12-20 KR KR1020077016576A patent/KR101159387B1/ko not_active IP Right Cessation
- 2005-12-20 WO PCT/US2005/046540 patent/WO2006073858A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20060146370A1 (en) | 2006-07-06 |
WO2006073858A3 (en) | 2007-03-22 |
US7286269B2 (en) | 2007-10-23 |
JP5490360B2 (ja) | 2014-05-14 |
WO2006073858A2 (en) | 2006-07-13 |
KR20070093431A (ko) | 2007-09-18 |
JP2008527416A (ja) | 2008-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7342585B2 (en) | Use of an input overscaled bitmap to generate emboldened overscaled bitmap | |
US7945114B2 (en) | Image transform method for obtaining expanded image data, image processing apparatus and image display device therefore | |
US7408555B2 (en) | Adjusted Stroke Rendering | |
US6597360B1 (en) | Automatic optimization of the position of stems of text characters | |
US6985160B2 (en) | Type size dependent anti-aliasing in sub-pixel precision rendering systems | |
JPH08255254A (ja) | グリッド・フィッティド・フォントのグレイスケール処理を用いたフォント・レンダリング方法 | |
WO2005098757A2 (en) | Edge detection based stroke adjustment | |
KR101159387B1 (ko) | 강조된 앤티-에일리어싱 비트맵을 생성하기 위한 입력 흑백비트맵의 사용 | |
US7969441B2 (en) | Adaptive contextual filtering based on typographical characteristics | |
US7292253B2 (en) | Display apparatus, information display method, information display program, readable recording medium, and information apparatus | |
US9311896B2 (en) | Glyph rendering | |
US20200020302A1 (en) | Method and apparatus for rendering contents for vision accessibility | |
US10049437B2 (en) | Cleartype resolution recovery resampling | |
US7945119B2 (en) | Optimizing character rendering | |
US8139066B2 (en) | Error metrics for characters | |
JP2018019212A (ja) | 情報処理装置及び描画処理方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150515 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160517 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |