KR101002524B1 - 국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정시스템과 방법 - Google Patents

국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정시스템과 방법 Download PDF

Info

Publication number
KR101002524B1
KR101002524B1 KR1020030016564A KR20030016564A KR101002524B1 KR 101002524 B1 KR101002524 B1 KR 101002524B1 KR 1020030016564 A KR1020030016564 A KR 1020030016564A KR 20030016564 A KR20030016564 A KR 20030016564A KR 101002524 B1 KR101002524 B1 KR 101002524B1
Authority
KR
South Korea
Prior art keywords
delete delete
text
font
line
line height
Prior art date
Application number
KR1020030016564A
Other languages
English (en)
Other versions
KR20040054467A (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
Priority claimed from US10/323,059 external-priority patent/US7385606B2/en
Priority claimed from US10/322,857 external-priority patent/US7271806B2/en
Priority claimed from US10/323,038 external-priority patent/US20040119714A1/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040054467A publication Critical patent/KR20040054467A/ko
Application granted granted Critical
Publication of KR101002524B1 publication Critical patent/KR101002524B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography

Abstract

본 시스템 및 방법은 임의의 언어에 있어서 서로 다른 디스플레이 매체들과 서로 다른 가독성 파라미터들에 대한 적절한 폰트 특성을 자동으로 결정한다. 상기 방법은 폰트 식별자 및 언어 식별자를 포함하는 데이터를 수신하고, 식별된 언어 및 식별된 폰트로 된 활자의 대표 라인을 생성하며, 활자의 대표 라인의 특성을 측정하고, 복수의 폰트 및 복수의 언어에 대해 측정을 정규화함으로써 폰트 특성을 결정하는 단계를 포함한다. 일 실시예에서, 국제적 번역기는 폰트 식별자 및 언어 식별자를 포함하는 데이터를 수신하는 데 이용되며, 수신된 데이터는 임의의 언어의 텍스트를 포함할 수 있다. 정규화는 "블랙 리버"라고 불리는 텍스트 일부의 폭을 참조하는데, 블랙 리버는, 플롯팅으로 측정된 특성을 식별하여 판독 방향에 직교하는 평균 회색조(grayness)를 결정하는 데 이용된다. 평균 회색조는 복수의 폰트 및 언어에 대한 비교를 가능하게 한다. 본 시스템 및 방법은 가독성을 위한 폰트의 최적 크기를 결정한다. 상기 방법은 폰트의 문자 밀도를 결정하고 뷰잉 매체의 가장 예리한 포커싱 가능 영역과 문자 밀도를 승산함으로써 폰트 특성을 결정한다. 상기 방법은 고정(fixation) 당 클러스터의 개수로 된 범위에 따라 상기 문자 밀도를 가변시켜 최대 폰트 크기 및 최소 폰트 크기를 결정하는 단계를 더 포함한다. 일 실시예에서, 문자 밀도는 폰트 내의 em 당 클러스터의 개수 대 소정의 포비얼 각도 이내의 가시 클러스터의 개수의 비이다. 소정의 포비얼 각도는 눈의 가장 예리한 포커스에 대한 시야가 될 수 있으며, 또는 망막 쇠퇴, 시력 손상, 시력 예리함, 터널시, 눈병, 근시, 원시, 난독증, 및 난시를 고려하여 판독자의 시각 민감도를 반영하는 판독자 특정 포비얼 각도일 수 있다. 본 시스템, 방법, 및 컴퓨터 판독 가능 매체는 임의의 언어에 있어서 다른 디스플레이 매체 및 다른 가독성 파라미터에 대한 적절한 라인 높이를 자동으로 결정한다. 일 실시예는 텍스트 스트링의 라인 높이를 결정하는 방법에 관한 것으로서, 텍스트 스트링에서의 em 당 클러스터의 개수를 나타내는 값을 결정하고 디폴트 라인 높이를 지수 함수로 스케일링하는 단계를 포함한다. 다른 실시예는 폰트 특성을 정의하는 복수의 요소를 보유하도록 구성되는 데이터 구조 및 데이터 구조에 결합된 모듈을 구비하는 컴퓨터 시스템에 관한 것으로서, 상기 모듈은 폰트 특성을 이용하여 상기 폰트 특성을 갖는 클러스터의 평균 폭에 지수 함수를 적용함으로써 뷰잉 조건이 변경됨에 따라 라인 높이를 다이내믹하게 조정한다.
Figure R1020030016564
폰트, 라인 높이, 가독성, 언어, 국제적 번역기

Description

국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정 시스템과 방법{INTERNATIONAL AUTOMATIC LINE HEIGHT, FONT SIZE AND FONT MEASUREMENT SYSTEM AND METHOD}
도 1은 본 발명이 상주하는 컴퓨터 시스템의 예를 일반적으로 예시한 블록 다이어그램.
도 2는 본 발명의 실시예에 따른 컴퓨터 시스템 내의 데이터 플로우 예를 예시하는 블록 다이어그램.
도 3은 본 발명의 실시예에 따른 도 2에 도시된 데이터 플로우를 더 상세하게 예시한 블록 다이어그램.
도 4는 본 발명의 실시예에 따른 국제적인 텍스트 특성을 결정하기 위한 방법을 예시한 플로우 다이어그램.
도 5는 본 발명의 실시예에 따른 국제적인 텍스트 특성을 결정하기 위한 더 상세한 방법을 예시한 플로우 다이어그램.
도 6은 본 발명의 실시예에 따른 국제적인 텍스트 특성을 결정하기 위한 더 상세한 방법을 예시하는 플로우 다이어그램.
도 7은 본 발명의 실시예에 따른 방법을 적용함에 따라 발생하는 그래픽 및 텍스트를 표현한 2개의 그림을 예시한 도면.
도 8은 본 발명의 실시예에 따른 라인 높이 및 폰트 크기를 자동으로 결정하기 위한 방법을 예시한 플로우 다이어그램.
도 9a는 본 발명의 실시예에 따른 폰트 특성을 결정하기 위한 방법을 구현 결과에 따른 그래프를 예시한 도면.
도 9b는 본 발명의 실시예에 따른 폰트 특성을 결정하기 위한 방법을 구현 결과에 따른 다른 그래프를 예시한 도면.
도 10은 본 발명의 실시예에 따른 폰트 크기를 결정하기 위한 방법을 예시한 플로우 다이어그램.
도 11은 본 발명의 실시예에 따른 뷰잉 거리에 관련한 텍스트 특성을 결정하는데 적절한 커브를 예시한 그래프.
도 12는 본 발명의 실시예에 따른 가장 예리한 포커싱가능 영역이 결정되는 방법을 예시한 그래프.
도 13은 본 발명의 실시예에 따른 삼각함수가 가장 예리한 포커싱가능 영역을 결정하는데 이용되는 방법을 예시하는 그래프.
도 14는 본 발명의 실시예에 따른 최소 및 최대 폰트 크기를 자동으로 결정하기 위한 방법을 예시하는 플로우 다이어그램.
도 15는 본 발명의 실시예에 따른 폰트 크기를 결정하는데 이용되는 데이터 플로우를 예시한 블록 다이어그램.
도 16은 본 발명의 실시예에 따른 텍스트 특징을 결정하는데 이용되는 데이터 플로우를 예시한 블록 다이어그램.
도 17은 본 발명의 실시예에 따른 폭 변동을 나타내는 다른 언어에서의 동일한 폰트 예를 예시한 도면.
도 18은 본 발명의 실시예에 따른 폰트 크기를 자동으로 스케일링하기 위한 방법을 예시한 플로우 다이어그램.
도 19는 본 발명의 실시예에 따른 라인 단위의 클러스터 개수의 함수에 기초하여 라인 높이를 조정하기 위한 방법을 예시한 플로우 다이어그램.
도 20은 본 발명의 실시예에 따른 포인트 단위의 주어진 문자 크기에 대한 경험적으로 발견된 라인 높이 확률을 예시한 그래프.
도 21은 본 발명의 실시예에 따른 디폴트 라인 높이로의 조정을 결정하기 위한 방법을 예시한 플로우 다이어그램.
도 22는 본 발명의 실시예에 따른 판독 메트릭스 엔진내의 데이터 플로우를 예시하는 블록 다이어그램.
도 23은 본 발명의 실시예에 따른 라인 길이 결정을 예시한 그래프.
도 24는 본 발명의 실시예에 따른 컴퓨터 시스템에서 국제적인 번역기를 이용한 데이터 플로우를 예시한 블록 다이어그램.
도 25는 본 발명의 실시예에 따른 실시예들과 조합하여 번역기를 이용하기 위한 방법을 예시하는 플로우 다이어그램.
도 26은 본 발명의 실시예에 따른 레이아웃 엔진내의 번역기를 이용하기 위한 방법을 예시하는 플로우 다이어그램.
<도면의 주요 부분에 대한 간단한 설명>
200 : 어플리케이션
210 : 속성 시트
220 : 속성값
202 : 레이아웃 엔진
230 : 구조와 레이아웃 및 입력 필터
240 : 판독 메트릭스 엔진
250 : 텍스트 엔진
본 발명은 폰트, 텍스트 및 문자 정렬에 관한 것으로, 특히 국제적인 자동 폰트 측정 시스템 및 방법에 관한 것이다.
"그들이 말하기를, 오라, 성과 대를 쌓아 그 꼭대기를 하늘에 닿게 하여 우리 이름을 내고 온 지면에 흩어짐을 면하자 하였다." 그 일이 순조롭게 진행되었고, 그들은 벽돌로 돌을 대신하며 역청으로 진흙을 대신하였다. 그러나, 여호와께서 그들의 언어를 혼잡케 하였으므로 그들로 서로 알아듣지 못하게 되었으며, 거기서 그들을 온 지면에 흩으신 고로 그들이 성 쌓기를 그쳤더라. 창세기 11:1-9. 바벨탑이 무너진 이래, 서로 다른 언어들로 소통하는 방법 및 그와 관련된 기록 시스템을 구하는 것은 도전이었다.
전세계적인 글로벌화에 따라, 이러한 도전을 극복하는 것이 중대하게 되었다. 그러나, 완전히 통합된 글로벌 사회를 막아왔던 국가들 간의 복잡한 문화적 차이가 존재한다. 컴퓨터 산업에서, 이들 차이점들로 인한 다언어 표시 및 교환의 한계로 인해 국제적 협력에 문제가 야기되었다.
다국적 컴퓨팅 산업의 도전에 대처하기 위한 첫 번째 발걸음은 1988년에 형성된 유니코드 컨소시엄으로서, 글로벌 문자 식별 표준을 개발했다. 컨소시엄의 목표는 모든 언어에 대한 문자의 고유 식별을 허용하는 표준을 개발하는 것이었다. 컨소시엄은 Addisoon-Welsey Developers Press 1997로부터 입수 가능한 현재 버전 2.1의 유니코드 표준(http://www.unicode.org에서 입수 가능)을 개발했다.
불행하게도, 많은 언어들 중 하나의 선택에서 문자를 프린트하고 표시할 수 있다는 것은 국제적 도전을 대처하기 위한 작은 진전에 불과했다. 동일하거나 때로는 더 중요한 이슈는 스크립트의 레이아웃, 폰트의 특성, 및 텍스트를 읽을 수 있게 하는 텍스트의 일반 조건이다. 그러나, 현재 언어들의 서체 및 스크립트 모양은 상이하고, 취사 선택성이며 동일한 규칙을 따르지 않는다. 예를 들면, 전형적인 영어 폰트인 Times New Roman은 포인트 단위로 라인 길이가 통상 폰트 크기의 120%로 설정되는 유일하게 Roman 기반의 인쇄 공식을 따른다. 용어는 Roman 문자에 기초하고 있다. Roman 활자의 개념은 베이스 라인, 캡 높이, 어센더(ascender) 높이, 디센더(descender) 높이 및 라인 높이를 포함한다.
기록된 언어는 디폴트 라인 길이나 서체와 같은 폰트 특성에 대해 동일한 규칙을 따르지 않는다. 오히려, 각 언어 및 스크립트는 문화적으로 상이한 기초에서 도출된다. 예를 들면, 일부 아시아의 스크립트는 그림적으로 도출된 상형 문자를 이용하고, 다른 아시아의 스크립트는 우측에서 좌측으로 읽고 심볼적으로 도출된다. 동일한 언어내 조차도, 스크립트 및 폰트는 소정의 특성 공식을 따르지 않는다. 디폴트 폰트 특성을 결정하기 위한 공식을 만든다는 것은 불가능한 일처럼 보인다. 모든 언어에 대해 적절한 공식을 만들기 보다는, 그래픽 디자이너들은 라인 길이, 서체 및 라인 높이를 시각적으로 변경하고, 렌더링이 눈을 즐겁게 하고 그래픽 디자이너에게 주지된 가독성(readability) 요구를 충족하도록 각 스크립트를 변경하는 것에 의지해 왔다.
현재, 모든 주지된 스크립트에 적용되는 폰트 특성을 결정하기 위한 해결책은 없다. 각 스크립트는 문화적으로 도출되었고 다른 베이스 및 완전히 다른 개념을 가지고 있다. 하나의 공식이 각 스크립트 내에서 특정 언어로 된 특정 스크립트에 대해 적용된다 할지라도, 그 스크립트의 많은 특성에 선형적인 관계를 가지지 않는다. 예를 들면, 동일한 스크립트에서 폰트 크기 또는 라인 길이의 임의의 변경은 가독성을 고려한 라인 길이의 변경을 필요로 한다. 그래픽 디자이너는 통상 가시적으로 라인 길이, 서체, 및 라인 높이를 변경한다. 활자의 라인이 길어지면 가독성을 위해 라인 높이를 길게 해야 한다. 또한, 폰트 크기는 라인 높이와 관련되지만, 더 큰 폰트는 더 작은 폰트와 같은 동일한 라인 높이를 요구하지 않는다.
라인 높이, 라인 길이 및 변경하는 폰트 크기의 사이에 선형 또는 명백한 관계가 없으므로, 많은 컴퓨터 어플리케이션은 수동 변경을 요구한다. 또한, 레이아웃 이슈를 더 복잡하게 하면, 그래픽 디자이너가 렌더링하는 과다한 컴퓨팅 머신들로 인해, 활자의 렌더링 장치를 알지 못한다. 예를 들면, 웹페이지에 대해 디자인된 타이핑된 페이지는 임의의 크기의 스크린 상에 렌더링될 수 있으므로, 라인 길이, 라인 높이 및 폰트 크기에 대한 최적 판독 크기를 미지의 것으로서 남겨둔다. 필요한 것은 현재로는 그래픽 디자이너를 필요로 하는 그러한 특징들을 자동으로 결정하기 위한 방법이다. 수동 조정없이 임의의 디스플레이 상에서 임의의 언어 및 임의의 크기로 텍스트가 렌더링될 수 있도록, 라인 높이, 폰트 크기 및 라인 길이와 같은 가독성 파라미터를 계산할 수 있는 자동 방법 및 시스템이 필요하다.
따라서, 시스템 및 방법은 임의의 언어에서 다른 표시 매체 및 다른 가독성 파라미터에 대한 적절한 폰트 특성을 자동적으로 결정한다. 하나의 실시예는 폰트 식별자 및 언어 식별자를 포함하는 데이터를 수신하는 단계; 식별된 언어에서 및 식별된 폰트로 활자의 대표 라인을 생성하는 단계; 활자의 대표 라인의 특성을 측정하는 단계; 및 복수의 폰트 및 복수의 언어에 대해 측정을 정규화하는 단계를 포함함으로써 폰트 특성을 결정하기 위한 방법에 관한 것이다.
특히, 활자의 대표 라인의 특성을 측정하는 단계는, 활자의 대표 라인에서 복수의 화소 행(row)에서 블랙 화소 대 전체 화소의 비를 측정하는 단계; 블랙 화소 대 전체 화소의 최고 비를 갖는 항을 식별하는 단계; 및 복수의 폰트 및 언어와 비교하여 텍스트의 대표 라인에서 폰트 특성을 식별하도록 식별된 행을 이용하는 단계를 포함한다.
하나의 실시예에서, 활자의 대표 라인의 특성을 측정하는 단계는, 폰트 높이를 식별하는 단계; 폰트 높이 내에서, 블랙 화소 대 전체 화소의 최고 비를 가지는 행을 포함하는 제1 부분을 식별하는 단계 - 제1 부분은 평균 화소 행보다 더 어두운 화소의 제1 행 및 화소의 최종 행을 포함함 -, 제1 부분 위의 제2 부분을 식별하는 단계; 및 제1 부분 아래의 제3 부분을 식별하는 단계를 포함한다. 이하의 설명에서, 이들 부분들은 "블랙 리버(black river)"에 관련된 폭으로서 지칭되고, 이러한 용어는 판독 방향에 수직으로 가로질러 평균 회색조(grayness)를 결정하도록 플롯팅된 측정된 특성을 식별하는데 이용되는 용어이다. 평균 회색조는 복수의 폰트 및 언어에 대한 비교를 가능하게 한다.
하나의 실시예에서, 국제적 번역기는 폰트 식별자 및 언어 식별자를 포함하는 데이터를 수신하는데 이용되고, 수신된 데이터는 하나의 언어로 된 텍스트를 포함할 수 있다. 언어 식별자는 국제적 번역기가 텍스트를 번역하는 하나 이상의 언어를 포함할 수 있다.
다른 실시예는 국제적 텍스트 레이아웃을 위한 방법에 관한 것으로, 텍스트 레이아웃은 em 측면에서의 폰트 크기로 렌더링되는 텍스트 스트링에 관한 것이고, 방법은 소정 폰트에서 국제적 텍스트의 정규화된 대표 라인의 측정된 특성을 이용하여 최적 폰트 크기, 라인 높이, 칼럼의 개수 및 라인 길이를 결정한다. 국제적 텍스트의 정규화된 대표 라인의 특성은 고정(fixation) 당 클러스터의 개수 및 em 당 클러스터의 개수를 제공한다.
한 폰트의 텍스트의 국제적 텍스트 레이아웃을 위한 시스템에 관한 실시예는 하나 이상의 파라미터를 유지하도록 구성된 구조와 레이아웃 및 입력 필터; 데이터 구조에 결합되고, 텍스트의 하나 이상의 파라미터를 수신하도록 구성된 판독 메트릭스 엔진; 및 판독 메트릭스 엔진에 결합되고, 폰트의 그래픽 밀도를 결정하도록 구성된 모듈을 포함하는 텍스트 엔진을 포함한다. 텍스트 엔진은 식별된 언어에서 폰트로 렌더링된 텍스트의 평균 회색조인, 폰트에 대한 그래픽 밀도를 결정하도록 구성된 모듈을 포함한다. 텍스트 엔진에 의해 결정된 활자 특성은 em 당 클러스터, 활자 깊이, 활자 폭, 활자의 가장 어두운 수평 부분의 폭, 및 활자의 가장 어두운 수평 부분의 깊이를 나타내는 값을 포함한다. 일실시예에 따른 다른 시스템은 레이아웃 엔진 내에서 애플리케이션에 결합되도록 구성된 국제적 번역기를 포함한다. 국제적 번역기는 어플리케이션으로부터 데이터를 수신하고, 번역된 텍스트에 대한 적절한 텍스트 레이아웃을 결정하기 위한 적절한 텍스트 레이아웃 특성을 가지는 번역된 텍스트를 어플리케이션에 제공한다. 하나의 실시예에서, 국제적 번역기는 어플리케이션으로부터 하나 이상의 언어 식별자 및 텍스트를 수신하고 번역된 텍스트를 제공하도록 구성되며, 국제적 번역기는 판독 메트릭스 엔진 및 텍스트 엔진으로 동작가능한 하나 이상의 데이터 구조를 생성하도록 구조와 레이아웃 및 입력 필터에 필요한 하나 이상의 파라미터를 결정한다. 국제적 번역기는 어플리케이션으로부터 호출되는 외부 국제적 번역기이다. 어플리케이션은 서버 및 클라이언트 머신일 수 있고, 어플리케이션을 호출하는 하나 이상의 디스플레이에 적합한 가독성 파라미터를 가지는 하나 이상의 언어 식별자에 따라 번역된 텍스트를 표시한다. 어플리케이션은 복수의 컴퓨터에 액세스 가능한 인터넷 어플리케이션일 수 있고, 어플리케이션은 번역된 텍스트를 제공하라는 요구를 수신하고 복수의 컴퓨터 각각의 디스플레이에 적절하게 포맷되고 복수의 컴퓨터 각각에 의해 요구되는 언어로 된 번역된 텍스트를 송신한다.
본 발명의 추가 특징 및 장점들은 첨부된 도면을 참조하여 제공된 실시예의 상세한 설명으로부터 명백하게 될 것이다.
첨부된 특허청구범위는 본 발명의 특징을 특징적으로 설정하고 있지만, 본 발명, 그 목적 및 장점들은 첨부된 도면을 참조한 이하의 상세한 설명으로부터 명백하게 될 것이다.
유사한 참조 부호가 유사한 구성요소를 나타내는 도면을 참조하면, 본 발명이 적절한 컴퓨팅 환경에서 구현되는 것으로서 예시되어 있다. 반드시 요구되는 것은 아니지만, 본 발명은 퍼스널 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행가능 명령의 일반적인 문맥으로 기술된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 활자를 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 본 발명은 핸드헬드형 장치, 멀티-프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것은 본 기술 분야의 숙련자라면 잘 알고 있을 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.
도 1은 본 발명이 구현되는 일반적인 컴퓨팅 시스템 환경(100)의 예를 예시하고 있다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 하나의 예에 불과하 고, 본 발명의 이용이나 기능의 범주에 관한 어떠한 제한을 암시하려고 하는 것이 아니다. 컴퓨팅 환경(100)은 예로 든 오퍼레이팅 환경(100)에서 예시된 컴포넌트들 중 어느 하나 또는 조합에 관련하여 임의의 의존성이나 조건을 전혀 가지고 있지 않은 것으로 해석된다.
본 발명은 수많은 다른 일반 목적 또는 특별 목적 컴퓨팅 환경이나 구성으로 동작가능하다. 본 발명에서 이용하기에 적합한 주지의 컴퓨팅 시스템, 환경, 및/또는 구성의 예들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드형 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스, 프로그램 가능한 소비자 전자장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하며, 이것으로 제한되지는 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 활자를 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 양쪽에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 시스템 예는 컴퓨터(110) 형태의 일반적인 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 유닛(120)에 결합시키는 시스템 버스(121)를 포함하고, 이것으로 한정되지는 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 구조 중 임의의 하나를 이용하는 로컬 버스를 포함하는 수개 활자의 버스 구조 중 임의의 하나 일 수 있다. 예를 들면, 그러한 구조는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standard Associate) 로컬 버스, 및 Mezzanine 버스로도 알려진 PCI(Peripheral Component Interconnect) 버스를 포함하고, 이들로 제한되지 않는다.
컴퓨터(110)는 통상 다양한 컴퓨터 판독가능한 매체를 포함한다. 컴퓨터 판독가능한 매체는 컴퓨터(110)에 의해 액세스 가능하고 휘발성 및 비휘발성 매체, 분리식 및 비분리식 매체 양쪽을 모두 포함하는 임의의 가용한 매체가 될 수 있다. 예를 들면, 컴퓨터 판독가능한 매체는 컴퓨터 기억 매체 및 통신 매체를 포함하고, 이들로 제한되지는 않는다. 컴퓨터 기억 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법이나 기술로 구현되는 휘발성 및 비휘발성, 분리식 및 비분리식 매체 양쪽을 포함한다. 컴퓨터 기억 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 디스크 기억 장치, 자기 카세트, 자기 테이트, 자기 디스크 기억 또는 자기 기억 장치, 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으며, 이것으로 제한되지는 않는다. 통신 매체는 통상 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 반송파와 같은 변조 데이터 신호 또는 다른 트랜스포트 메카니즘으로 실시하고, 임의의 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예를 들면, 통신 매체는 유선 네트워크 또는 다이렉트-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하며, 이들로 제한되지는 않는다. 상기의 임의의 조합도 컴퓨터 판독가능한 매체의 범주내에 든다.
시스템 메모리(130)는 판독전용 메모리(ROM, 131) 및 랜덤 액세스 메모리(RAM, 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 기동 동안과 같이 컴퓨터(110) 내의 소자들간의 정보 전달을 도와주는 기본 루틴을 포함하는 기본 입출력 시스템(133, BIOS)은 통상 ROM(131)에 저장된다. RAM(132)은 통상 처리 유닛(120)에 즉시 액세스 가능하거나 이것에 의해 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들면, 도 1은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 포함하고, 이들로 제한되지는 않는다.
컴퓨터(110)는 다른 분리식/비분리식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예로서, 도 1은 비분리식, 비휘발성 자기 매체에 기록하거나 판독하는 하드 디스크 드라이브(141), 분리식, 비휘발성 자기 디스크(152)에 기록하거나 판독하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체와 같은 분리식, 비휘발성 광 디스크(156)에 기록하거나 판독하는 광 디스크 드라이브(155)를 예시한다. 예로 든 오퍼레이팅 환경에서 이용될 수 있는 다른 분리식/비분리식, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고형체 RAM, 고형체 ROM, 등을 포함하고, 이들로 제한되지는 않는다. 하드 디스크 드라이브(141)는 통상 인터페이스(140)와 같은 비분리식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상 인터페이스(150)와 같이 분리식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
상기 설명되고 도 1에 예시된 드라이브 및 그 연관 컴퓨터 기억 매체는 컴퓨터(110)에 대해 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램, 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들면, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 예시된다. 유의할 점은 이들 컴포넌트들은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일하거나 또는 상이할 수도 있다는 점이다. 오퍼레이팅 시스템(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 사본(copy)이라는 것을 예시하도록 다른 번호가 주어진다. 사용자는 키보드(162), 통상 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 장치(161)를 통해 컴퓨터(110)에 명령과 정보를 입력한다. 다른 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나(dish), 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 시스템 버스에 결합되는 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 종종 접속되고, 병렬 포트, 게임 포트 또는 범용 병렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 활자의 디스플레이 장치는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터뿐만 아니라, 컴퓨터는 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 도 1에서는 메모리 기억 장치(181)만이 예시되어 있지만, 통상 퍼스널 컴퓨터(110)와 관련하여 상기 설명한 구성요소들 중 다수 또는 모두를 포함한다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN, 71) 및 원거리 통신망(WAN, 173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 그러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 이용되는 경우, 퍼스널 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 이 용되는 경우, 컴퓨터(110)는 통상 모뎀(172) 또는 인터넷과 같이 WAN(173)을 통한 통신을 확립하기 위한 다른 수단을 포함한다. 내부 또는 외부에 존재하는 모뎀(172)은 사용자 입력 메카니즘(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 퍼스널 컴퓨터(110)에 관련하여 도시된 프로그램 모듈, 또는 그 일부는 원격 메모리 기억 장치에 저장될 수 있다. 예로서, 도 1은 메모리 장치(181) 상에 상주하는 것으로서 원격 어플리케이션(185)을 예시하고 있다. 도시된 네트워크 접속은 예로 든 것이며 컴퓨터간 통신 링크를 확립하는 다른 수단이 이용될 수 있다는 것은 자명하다.
이하의 설명에서는, 본 발명이 달리 지적되지 않으면, 하나 이상의 컴퓨터에 의해 수행되는 동작들의 액트 및 심볼 표현을 참조하여 설명된다. 이처럼, 종종 컴퓨터-실행되는 것으로서 지칭되는 그러한 액트 및 오퍼레이션은 데이터를 구조화된 형태로 표현하는 전기 신호의 컴퓨터의 처리 유닛에 의한 조작을 포함한다는 것은 자명하다. 조작은 데이터를 변형하고, 본 기술 분야의 숙련자라면 잘 알고 있는 방식으로 컴퓨터의 오퍼레이션을 재구성하거나 또는 변경하는 컴퓨터의 메모리 시스템에서의 위치에 데이터를 유지한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정의되는 특정 속성을 가지는 메모리의 물리적 위치이다. 그러나, 본 발명은 상기 문맥에서 설명되었지만, 이하에 설명되는 다양한 실행 및 오퍼레이션이 하드웨어에서도 구현될 수 있다는 것은 본 기술 분야의 숙련자에게는 자명하다는 것을 제한하는 것을 의미하는 것은 아니다.
본 발명의 하나의 중요한 양태에 따르면, 본 발명의 실시예를 구현하는데 적절한 Windowsⓡ 클라이언트와 같은 클라이언트 소프트웨어에 대한 블록 다이어그램을 표시한 도 2를 참조한다. 블록 다이어그램은 도 1에 도시된 컴퓨터(110) 상에서 운용되는 임의의 어플리케이션이 될 수 있는 어플리케이션(200)을 도시하고 있다. 적절한 어플리케이션 프로그램은 예를 들면 마이크로소프트 워드, 마이크로소프트 퍼블리서(publisher), 쿼크엑스프레스(QuarkXpress), 아도비 인디자인(Adobe Indesign) 등을 포함한다. 어플리케이션(200)은 속성 시트(210)를 포함하여 도시되어 있다. 속성 시트(210)는 컴퓨터(110)내에 존재하거나 클라이언트-서버 접속을 통해 가용한 레이아웃 엔진(202)과 상호작용한다. 레이아웃 엔진(202)은 컴퓨터(100) 상에서 운용되는 클라이언트 어플리케이션이거나 네트워크 접속을 통해 가용할 수도 있다. 어플리케이션(200) 내의 속성 시트(210)는 구조와 레이아웃 및 입력 필터(230)에서 수신되는 속성 값을 레이아웃 엔진(202)에 인가한다. 구조와 레이아웃 및 입력 필터(230) 뿐만 아니라, 레이아웃 엔진(202)은 또한 판독 메트릭스 엔진(240) 및 텍스트 엔진(250)도 포함한다. 속성 시트 데이터 구조는, 어플리케이션(200)을 위한 폰트 및 텍스트를 렌더링하기 위한 적절한 레이아웃을 제공하기 위해 레이아웃 엔진(202)에 의해 요구되는 요소들을 포함한다. 구조와 레이아웃 및 입력 필터(230)는 판독 메트릭스 엔진(240)으로의 입력을 위한 요소들을 조직하고, 입력 속성을 판독 메트릭스 엔진(240)에 제공한다. 판독 메트릭스 엔진(240)은 속성에 대해 동작하여 데이터를 텍스트 엔진(250)에 전달한다. 텍스트 엔진(250)은 폰트 패밀리 데이터에 대한 식별자 및 언어에 대한 식별자를 포함하는 데이터를 수신하고, 판독 메트릭스 엔진(240)에 의한 이용을 위해 텍스트 특성에 관련된 계산된 데이터를 출력한다.
이하에 더 상세하게 설명되는 바와 같이, 판독 메트릭스 엔진(240)은 입력값에 대해 동작하여, 호출하는 어플리케이션으로부터 주어진 제한내에서 최적의 인쇄상 설정을 제공한다. 입력 제한은 환경적 제한 및 디자인 제한을 포함하고, 이들로만 제한되는 것은 아니다. 환경적 제한은 확대, 스크린 크기 및 해상도, 판독자 광학 향상, 및 판독자 거리를 포함할 수 있다. 디자인 제한은 폰트 요구, 마진 요구, 칼럼 요구, 및 레이아웃 사각형 요구를 포함할 수 있다. 이들 제한내에서, 판독 매트릭스 엔진(240)은 윈도우, 페이지 및 라이브 매터(live matter) 크기, 마진 폭, 최적 칼럼 수, 최적 칼럼 및 여백 폭, 및 최적 폰트 크기 및 라인 높이를 위한 설정들을 포함하는 설정을 제공한다. 제공된 설정은 디자인 요구 사항에 따라 포인트 측정으로 또는 픽셀 측정으로 된 것일 수 있다. 양호하게도, 판독 메트릭스 엔진(240)에 의해 출력된 설정은 주지의 언어 및 폰트에 대해 적절하다.
이제, 도 3을 참조하면, 도 2의 블록 다이어그램이 데이터 구조 플로우를 예시하는 블록 다이어그램 형태로 확장된다. 도 3은 페이지 크기(312), 페이지 마진(314), 폰트 패밀리(316), 폰트 크기(318), 라인 높이(320), 칼럼 카운트(322), 칼럼 폭(334), 및 페이지 크기(326)와 같은 아이템을 포함하는 속성 시트(210)를 예시하고 있다. 또한 속성 시트(210)에는 무시될 수 없는 값들이 포함된다. 블록(329)을 통해 적응가능한 값들과 그렇지 않은 값들은 구조와 레이아웃 및 입력 필터(230)에 공급된다. 특히, 구조와 레이아웃 및 입력 필터(230)는 요소 블록(330) 및 텍스트 플로우 프리젠터(352)를 포함한다. 요소 블록(330)은 데이터를 데이터 구조로 조직화한다. 예로 든 데이터 구조는 폰트 패밀리(332), 언어(334), 폰트 크기 변경(336), 라인 높이 변경(338), 페이지 마진(340), 페이지 마진 유연성(342) 및 칼럼 선호도(344)를 포함하는 것으로 도시되어 있다. 데이터는 요소 블록(330)에서 조직화되어 판독 메트릭스 엔진 입력 속성(346)으로서 제공된다. 개별적으로, 텍스트 플로우 프리젠터(352)는 판독 메트릭스 엔진(240)에 윈도우 크기(354)를 제공한다. 다르게는, 텍스트 플로우 프리젠터(352)는 네트워킹된 컴포넌트 또는 컴퓨터(110)내의 시스템 컴포넌트일 수 있다. 하나의 실시예에서, 레이아웃 엔진(202)은 매체 통합 층(360)과 상호작용한다. 매체 통합층(360)은 매체 크기(362)를 판독 메트릭스 엔진(240)에 제공한다. 매체 크기(362)의 한 예는 도 1에 도시된 컴퓨터(110)에 대한 스크린 크기를 포함한다.
판독 메트릭스 엔진(240)은 이하에 더 상세하게 설명되는 바와 같이 본 발명의 실시예를 구현한다. 하나의 실시예에서, 판독 메트릭스 엔진(240)은 텍스트 엔진(250) 및 요소 블록(230)과 상호작용한다. 요소 블록(230)은 판독 메트릭스 엔진 입력 속성(346)을 유지한다. 요소 블록(230)은 텍스트 플로우 프리젠터(352)에 결합된다. 하나의 실시예에서, 요소 블록(230) 및 텍스트 플로우 프리젠터(352)는 요소 블록(230) 내의 구조와 텍스트 플로우 프리젠터(252)내의 레이아웃을 포함하는 하나의 컴포넌트를 함께 형성한다.
판독 메트릭스 엔진(240)은 입력을 수신하고 그것을 조작하여, 호출하는 어플리케이션의 텍스트 레이아웃에 대한 유용한 설정을 생성한다. 설정은 크기순 정렬을 위한 사용자 설정을 고려할 수 있고 또는 디폴트 크기가 자동으로 결정될 수 있다. 텍스트 엔진(250)은 레이아웃 엔진(202)의 중요한 특징이다. 텍스트 엔진(250)은 텍스트 값에 관련된 언어 특정 데이터를 부가하는 입력을 판독 메트릭스 엔진(240)에 공급한다. 텍스트 엔진(250)은 폰트 패밀리 식별자(364) 및 언어 식별자(366)를 수신한다. 텍스트 엔진(250)으로부터의 출력은 텍스트 엔진(250) 내부에서 계산된 측정값들을 포함한다. 특히, 도 5를 참조하여 이하에 더 상세하게 설명되는 바와 같이, 텍스트 엔진(250)은 활자의 렌더링된 라인에서 화소의 각 행에서 블랙 및 화이트 화소들의 비를 측정하고, 제공되는 폰트 및 언어에서 텍스트의 대표 라인의 특성을 식별하는 항들을 이용하여 이 측정값들을 제공한다. 이들 텍스트 측정값(368)은 판독 메트릭스 엔진(240)에 제공된다. 판독 메트릭스 엔진(240)은 등식 등을 측정 및 입력 속성(346)에 적용하여 페이지 크기(382), 페이지 마진(384), 폰트 패밀리(386), 폰트 크기(388), 라인 높이(389), 칼럼 갭(390), 화상 폭(392), 칼럼 폭(394), 칼럼 카운트(396) 및 텍스트 들여쓰기(398)를 포함하는 출력 속성값(380)을 제공한다. 이들 속성들은 호출하는 어플리케이션(200)에 리턴된다.
도 3과 조합하여 도 4를 참조하면, 실시예에 따라 텍스트 레이아웃 속성을 결정하는 방법이 플로우 다이어그램에 예시되어 있다. 방법은 도 2 및 도 3에 도시된 판독 메트릭스 엔진(240) 및 텍스트 엔진(250)에서 수행되는 기능들에 관한 것이다. 특히, 블록 410은 국제적인 텍스트 레이아웃을 위한 환경에 관한 데이터를 수신하도록 제공된다. 도 3에 도시된 바와 같이, 데이터는 속성 시트(210), 텍스트 플로우 프리젠터(252) 및 텍스트 엔진(250) 중 하나 이상으로부터 요소들을 포함할 수 있다. 환경에 관한 데이터는 마진, 폰트 크기, 칼럼, 라인 높이, 라인 길이 및 언어와 관련된 사용자 정의 또는 시스템 요구 파라미터뿐만 아니라 스크린 크기, 종이 크기 등과 같은 데이터를 포함한다. 블록 420은 소정 폰트에서 국제적 텍스트의 정규화된 대표 라인의 측정된 특성 및 환경의 측정된 특성을 이용하여 데이터에 동작하도록 제공된다. 국제적 텍스트의 정규화된 대표 라인의 특성은 텍스트 엔진(250)에서 측정된다. 판독 메트릭스 엔진(240)은 텍스트 엔진(250)에 결합되거나 어플리케이션 프로그램 인터페이스(API)를 통해 텍스트 엔진(250)을 호출할 수 있다. 환경적 특성은 판독 메트릭스 엔진(240)에서 측정된다. 국제적 텍스트의 정규화된 대표 라인의 측정된 특성을 수신한 후에, 판독 메트릭스 엔진(240)은 수신된 계산된 데이터에 대해 복수의 오퍼레이션을 수행한다. 판독 메트릭스 엔진의 출력은 호출 어플리케이션(200)에 제공된다.
텍스트 엔진(250)의 동작은 도 5 및 도 6의 플로우 다이어그램 형태로 더 상세하게 이하에 설명된다. 도시된 바와 같이, 블록 510에서, 텍스트 엔진(250)은 폰트 패밀리 식별자(364) 및 언어 식별자(366)를 수신한다. 블록 520에서, 텍스트 엔진은 식별된 언어 및 식별된 폰트에서 활자의 대표 라인의 특성을 측정한다. 양호하게는, 제공된 측정은 임의의 주어진 레이아웃에서 임의의 주어진 언어 및 폰트에 대한 폰트 크기 및 라인 높이의 치우치지 않은 결정을 허용한다. 블록 530에서, 텍스트 엔진(250)은 복수의 폰트 및 언어에 대해 측정을 정규화한다. 그리고 나서, 측정은 적절한 크기순 정렬을 결정하는데 이용된다.
본 개시의 목적상, 크기순 정렬을 위한 항은 활자의 한 라인의 베이스라인에서 다음 라인의 베이스라인까지의 거리인 라인 높이를 포함하고, 이것으로 한정되지는 않는다. 베이스라인은 기록 시스템에서 문자들이 그 위에 놓여 있거나 또는 문자들이 매달려 있는, 인지되는 라인이다. 영어 문자에 대해, 베이스 라인은 대문자 및 소문자가 배치되는 가상선을 지칭한다. X-높이는 폰트에서 소문자 x의 높이에 거의 등가인 소문자의 표준 높이를 지칭한다. 캡-높이는 활자의 라인에서 대문자의 높이를 지칭하고, 종종 어센더(ascender) 높이와 동등시된다. 일부 폰트에서, 어센더는 대부분의 대문자의 높이보다 크거나 작다. 어센더는 x-높이 위로 확장하는 소문자의 일부 l, t, f, b, d, h, k이다. 디센더(descender)는 베이스 라인 아래로 확장되는 소문자 중 일부 g, j, p, q, y이다.
em은 폰트의 크기와 동일한 측정 단위이다. 그러므로, em은 폰트 크기가 변경될 때마다 변경되는 가변 단위이다. 본 명세서의 목적상 em은 측정되는 활자의 제곱이다. 예를 들면, 폰트가 12-포인트 활자으로 렌더링된다면, em은 12 포인트 높이이고 12 포인트 폭이다. 폰트가 100 포인트 활자으로 렌더링된다면, em은 100 포인트 높이이고 100 포인트 폭이다. 그러므로, em은 활자에 대한 비-표현적 크기 단위로서 이용되고, 물리적 특성이 아니라 활자가 디자인되는 방식에 기초한다. 결과적으로, 일부 폰트 디자인은 태국어와 같은 em 외부에 존재하는 잉크를 가지고 있을 수 있고, 다른 것들은 한국어와 같이 em보다 더 상당히 적은 공간을 차지한다. 본 명세서의 목적상, "클러스터"는 분석된 폰트 및 텍스트의 렌더링 단위를 지칭한다. 특히, 클러스터는 전자 텍스트의 라인에 커서가 삽입될 수 있는 포인트들 간의 인쇄물이다. 클러스터는 키 스트로크, 문자 또는 그림문자에 의해서가 아니라 라인상의 공간 부족에 의해 식별되므로, 클러스터란 용어는 모든 언어에 적절하기 때문에 어디에나 존재한다. 라틴 폰트에서, 클러스터 및 문자는 동일할 수 있다.
도 6을 참조하면, 도 5에 도시된 방법이 더 상세하게 설명된다. 도 6에 기재된 방법은 임의의 폰트 및 임의의 언어에서 텍스트의 임의의 활자의 회색조의 숫자 특성화를 제공한다. 숫자 특성화는 활자가 페이지 상에 나열될 때 판독자가 보는 것, 즉 판독 동작시 눈이 따라가는 어두운 라인의 개수에 기초한다. 이들 라인의 크기 및 이들 간의 공간은 상이한 기록 시스템, 스크립트 활자, 언어 및 문화에 따라 가변되므로, 측정은 임의의 언어에서 임의의 기록 시스템에 대해 적절하도록 설계된다. 텍스트의 라인에서 잉크로 인쇄된 공간은 여기에서 "블랙 리버"로 지칭된다. 특히, 블랙 리버는 활자의 대표 라인에서 잉크의 최고 및 최저 포인트를 포함하는, 주어진 폰트 및 언어의 텍스트의 단일 라인에서 잉크에 의해 차지되는 전체 공간을 지칭한다.
블랙 리버가 측정되는 방법이 도 6을 참조하여 설명된다. 블록 610에 도시된 바와 같이, 폰트 패밀리 식별자 및 언어 식별자를 수신한 후에, 텍스트 엔진(250)은 활자의 대표 라인에서 복수의 화소 행에서 블랙 화소 대 전체 화소의 비를 측정한다. 하나의 실시예에서, 텍스트 엔진(250)은 활자의 렌더링된 라인에서 화소의 각 행에서 블랙 화소 대 전체 화소의 비를 측정한다. 블랙 화소를 가지는 화소의 각 행이 측정된 후에, 블랙 화소 대 전체 화소의 최고 비를 가지는 행이 블록 620에 도시된 바와 같이 블랙으로 정규화된다. 모든 다른 행의 측정들은 그 블랙 포인트로 정규화된다. 정규화는 폰트의 블랙 포인트가 모든 폰트에 대해 정규화될 수 있도록 다양한 가중의 폰트로부터 등가 측정을 가능하게 한다. 예를 들면, em의 1/200으로 측정된 블랙 리버의 가장 어두운 부분은 실제 어두움 정도에 관계없이 100% 블랙으로 간주된다. 블랙 리버의 다른 모든 부분은 0%(화이트) 및 100%(정규화된 블랙, 또는 리버의 가장 어두운 부분) 간의 값으로서 그레이 깊이에 대해 측정된다. 평균 비가 계산되고 나서, 평균보다 어두운 화소의 제1 행 및 화소의 최종 행이 표시된다.
블록 630은 블랙 화소 및 전체 화소의 측정된 비를 이용하여 폰트 높이를 식별하도록 제공된다. 블록 640에서, 텍스트 엔진은 폰트 높이를 이용하여, 블랙 화소 대 전체 화소의 최고 비를 가지는 행을 포함하는 "채널"로서 여기에서 지칭되는 제1 부분을 식별하며, 제1 부분은 평균 화소 행보다 더 어두운 화소의 제1 행 및 화소의 최종 행을 포함한다. 라틴 텍스트에서, 채널은 x-높이와 동등하다. 다른 스크립트 활자에서, x-높이의 직접적인 등가는 존재하지 않는다. 텍스트의 라인에서 렌더링되는 각 언어의 각 폰트는 그 텍스트의 라인에서 어두운 부분을 가지고 있으므로, 여기에서 실시예는 x-높이 대신에 채널 및 채널에 대한 측정을 참조한다. 여기에 기재된 다수의 실시예에서, 채널은 스크립트에서 텍스트의 라인에 대한 적절한 라인 높이 및 다른 설정을 결정하기 위한 중요한 측정이다. 블록 650에서, 텍스트 엔진(250)은 제1 부분 위의 제2 부분을 식별한다. 블록 660에서, 텍스트 엔진(250)은 제1 부분 아래의 제3 부분을 식별한다. 제2 부분 및 제3 부분은 여기에서 "샐로우 이전(before shallows)" 및 "샐로우 이후(after shallows)"로서 각각 지칭되고, 집합적으로 "샐로우"로서 지칭된다. 대부분의 스크립트에서, 식별된 채널의 양쪽 측면상에 샐로우가 통상 존재한다. 샐로우는 활자의 라인이 잉크를 가지는 영역이고, 모든 문자가 그것으로 확장되는 것은 아니다. 라틴어에서, 활자는 어센더 및 디센더와 등가인 샐로우를 가지고 있다. 다수의 액센트 마크를 가지는 언어는 액센트 마크를 포함하는 셀로우를 가지고 있다. 거의 일정한 언어는 샐로우를 거의 또는 전혀 가지지 않는 채널을 가지는 것으로서 식별될 수 있다. 많은 아시아 언어들은 하나의 채널만을 가지고 있고 샐로우를 가지지 않은 것으로서 식별될 것이다. 이들 언어들은 동일한 크기인 리버와 채널을 가지고 있다.
블록 670에서, 텍스트 엔진(250)은 정렬 포인트, 어두움의 피크 등의 식별을 가능하게 하는 측정을 도시한다.
채널과 샐로우를 식별한 후에, 블록 680은 각 부분에서 평균 블랙 대 전체 비를 결정하도록 제공된다. 부분들은 채널 폭, 샐로우 이전 폭 및 샐로우 이후 폭을 포함하는 3개의 측정의 폭을 제공함으로써 특정 폰트에서 활자의 라인을 기술한다.
하나의 실시예에서, 텍스트 엔진(250)은 화소들의 가장 어두운 행의 블랙 대 전체 비, 활자의 전체 대표 라인의 평균 블랙 대 전체 비, 샐로우 이전의 폭, 샐로우 이전의 블랙 대 전체 비, 채널의 폭, 채널의 블랙 대 전체 비, 샐로우 이후의 폭, 및 샐로우 이후의 블랙 대 전체 비 중 하나 이상을 포함하는 측정을 판독 메트릭스 엔진(240)에 리턴한다. 일부 아시아 언어와 같이 언어가 수직으로 씌어지는 경우, 수평 언어에 대한 수평 활자의 행을 측정하는 대신에 수직 언어에 대한 수직 활자의 칼럼을 측정함으로써 동일한 측정이 수행될 수 있다. 본 명세서의 효과와 관련하여 본 기술 분야의 숙련자라면 알 수 있는 바와 같이, 수직 언어를 결정하기 위한 원리는 동일하므로, 예를 들면, 수직 활자의 채널은 수평 활자의 채널로부터의 측정에 대해 90도 변위될 것이다.
다른 실시예에서, 3개의 부분과는 다른 적합도에서의 정렬 포인트 또는 가장 어두운 행에 대응하는 측정, 또는 생성된 임의의 그래프에서의 피크와 같은 추가 측정이 판독 메트릭스 엔진(240)에 의해 필요한대로 리턴될 수 있다.
도 7을 참조하면, 실시예에 따른 대응하는 그래프를 가지는 시뮬레이션된 텍스트의 사진이 도시되어 있다. 사진(710)은 세리프 라틴 폰트를 예시하고 있고, 피크는 일반적으로 캡의 상부, x-높이, 소문자 "e"의 크로스바, 베이스라인, 및 디센더에 존재하는 것을 도시한다. 반대로, 사진(720)은 상이하고 더 중앙으로 몰린 정렬 포인트를 가지는 비-라틴 스크립트 형태를 예시하고 있다.
리턴된 다른 측정은 em과 관련한 측정이 될 수 있다. 텍스트 엔진(250) 및 판독 메트릭스 엔진(240)에서, em은 수평 및 수직 측정 양쪽을 확립하는데 이용된다. 텍스트 엔진(250)에 의해 리턴될 수 있는 다른 측정은 em당 클러스터이고, 이는 판독 메트릭스 엔진(240)에 리턴된 측정일 수도 있다. em당 클러스터는 평균 클러스터 폭에 대한 폰트 높이의 비에 등가이다.
판독 메트릭스 엔진(240)에 유용할 수 있는 다른 측정들은 em에 대한 실수로서 블랙 리버의 폭, em에 대한 실수로서 샐로우 이전의 폭, em에 대한 실수로서 샐로우 이후의 폭, em에 대한 실수로서 채널의 폭, 채널, 및 정규화 이후에 0= 모두 화이트 및 1=모두 블랙이 되도록 실수로서 각 샐로우의 평균 깊이, em 당 클러스터의 평균 개수, 및 텍스트의 대표 라인에서 클러스터의 전체 개수를 포함한다. 폭 값들은 em에 대한 실수로서 판독 메트릭스 엔진(240)에 리턴될 수 있고, 깊이 값들은 정규화된 블랙 포인트에 대해 실수로서 판독 메트릭스 엔진(240)에 리턴될 수 있다. 하나의 실시예에서 전체 클러스터 개수는 판독 메트릭스 엔진(240) 또는 텍스트 엔진(250) 중 어느 하나에서 언어 테이블에 미리 저장된다.
도 8은 판독 메트릭스 엔진(240)과 텍스트 엔진(250)내의 액션간의 상호작용을 예시한 플로우 다이어그램에서 방법 예를 예시하고 있다. 블록 810에서, 사용자는 어플리케이션에서 문서를 마크업한다. 마크업은 언어 및 폰트의 지시를 포함한다. 지시는 시스템 링크 또는 사용자 입력을 통해 수행될 수 있다. 언어 및 폰트를 식별하는 지시는 블록 820에서 판독 매트릭스 엔진(240)으로 패싱된다. 하나의 실시예에서, 텍스트 엔진(250)은 판독 메트릭스 엔진(240)이 측정을 위해 호출할 수 있는 폰트 오브젝트 및 API를 노출시킨다. 블록 822에서, 판독 메트릭스 엔진(240)이 폰트 오브젝트를 인스턴스화하면, 폰트 및 언어 식별자가 텍스트 엔진(250)으로 패싱된다. 인스턴스화하지 않으면, 판독 메트릭스 엔진(240)은 텍스트 엔진(250)을 호출하지 않고 언어 및 폰트에 대해 동작한다. 예를 들어, 판독 메트릭스 엔진(240)이 그 폰트 및 언어에 대한 필요한 측정을 가지는 테이블을 구비하는 경우, 텍스트 엔진(250)을 호출하는 것은 불필요하다. 블록 828은 텍스트 엔진(250) 내에서, 언어 및 폰트를 소정 테이블과 비교하여 폰트 특성에 관련한 데이터를 검색하거나 언어에서 대표 텍스트 스트링을 검색함으로써 언어 및 폰트 식별자가 이용되도록 제공된다. 대표 텍스트 스트링이 검색되면, 블록 829에서 폰트 또는 폰트 패밀리가 언어에 인가되어 대표 텍스트 스트링을 생성하고, 이는 텍스트의 단일 라인 또는 다른 적절한 측정가능한 포맷일 수 있다. 블록 830은 텍스트 엔진이 블랙 리버, 채널 및 샐로우를 측정하는 것을 제공한다. 블록 832는 텍스트 엔진(250)이 블랙 포인트 및 다른 모든 관련 값들을 백분율로 정규화하는 것을 제공한다. 블록 840은 텍스트 엔진(250)이 상기 설명된 바와 같이, 폭 및 깊이 측정, 활자의 em 당 클러스터의 평균 개수, 활자의 대표 라인의 클러스터의 총 개수 등의 측정을 리턴한다는 것을 제공한다.
하나의 실시예에서, 텍스트 엔진(250)은 em 간격의 1/200로 텍스트의 대표 라인에서 화소의 행을 측정하고, 텍스트의 대표 라인에서 블랙 화소 대 전체 화소의 비를 그레이의 평균 레벨로서 기록한다. 측정은 0-255의 값 또는 백분율 내지 2자리의 십진수 중 하나로서 수행될 수 있다. 블록 850은, 측정이 판독 메트릭스 엔진(250)에 패싱된 후에 판독 메트릭스 엔진(250)이 폰트 크기 및 라인 높이를 계산하는 것을 제공한다. 블록 860은 사용자가 적절하게 크기조정되고 이격되어 있는 활자를 가지는 임의의 뷰잉 표면상에서 페이지를 보는 것을 제공한다. 도 9a를 참조하면, 그래프(900)는 텍스트 엔진(250)이 도 8에 도시된 측정을 계산한 후에 측정된 샘플을 예시하고 있다. 그래프는 도 7에 도시된 그래프의 정규화된 버전과 같이 Times New Roman의 측정을 도시하고 있다. 도시된 측정은 0(블랙) 내지 255(화이트)로 측정된 각 화소 행의 평균 회색조를 포함한다. 그래프(900)는 회색조를 백분율로서 표시하는 정규화된 버전을 예시하고 있다. 원시 데이터(raw data)는 그래프(900)로 정규화되어, 활자의 가장 어두운 라인은 절대 블랙 또는 100%로서 다루어지고, 가장 밝은 화소는 0%이다. 특히, 그래프(900)는 X-축(910)을 따른 텍스트의 대표 라인의 높이를 포인트로 나타내고, Y-축(920)에 따른 화소의 각 행의 평균 회색조를 백분율로 나타낸다. 정규화된 측정은 실선(902)으로 도시되고, 채널 및 샐로우의 절대 측정은 점선(909)으로 도시되며, 회색조에 대한 중간 값은 라인(906)으로서 도시된다. 도 7에 도시된 그래프(710)와 그래프(900)의 비교는 정렬 포인트(930, 940)를 나타내고, 또한 이러한 폰트 및 언어에서 x-높이(940) 및 베이스 라인(930)에 의해 묘사된 채널을 나타낸다. 활자 커브(902)와 라인(906)의 교차점은 데이터 포인트(24)이고, 다음 교차는 데이터 포인트(71)이다. 폰트의 전체 높이는 91이다. 100의 em 블록에 대해, em에 대한 실수의 집합은 샐로우 이전=24, 채널=45, 샐로우 이후=20, 및 블랙 리버=91이 된다.
도 9b는 각 샐로우 및 채널의 평균 깊이를 나타내는 점선(950)을 가지는 동일한 활자 커브(902)를 가지는 그래프(990)를 예시하고 있다. 백분율인 평균 깊이 값은 라인 높이의 양을 결정하는데 이용된다. 리턴된 값은 샐로우 이전 평균 깊이인 0.099, 채널 평균 깊이인 0.61, 및 샐로우 이후의 평균 깊이인 0.038을 포함할 수 있다.
텍스트 엔진(250)으로부터의 측정은 판독 메트릭스 엔진(240)으로 리턴된다. 판독 메트릭스 엔진(240)은 다양한 목적을 위해 그 측정을 이용한다. 판독 메트릭스 엔진(240)의 하나의 기능은 임의의 언어에서 판독 가능한 텍스트에 대한 디폴트 폰트 크기를 결정하는 것이다. 종래 기술의 디폴트 폰트 크기는 12 포인트 또는 10 포인트, 및 10 피치 또는 12 포인트와 같이, 타이프라이터 상의 엘리트(Elite) 및 피카(Pica) 활자의 폰트 크기에 기초하여 하드와이어된(hardwired) 숫자를 포인트 또는 화소로 이용한다. 판독 메트릭스 엔진(240)은 언어 및 문화의 판독 특성, 및 텍스트 엔진(250) 및 환경적 인자를 통해 결정되는 폰트의 물리적인 렌더링된 특성에 기초하여 임의의 주어진 언어 또는 스크립트 활자에서 텍스트에 대해 적절한 크기를 결정함으로써 새로운 접근법을 취한다. 판독 메트릭스 엔진(240)은 자동 및 스케일가능할 수 있고, 문화적으로 특정한 입력 및 사용자 조정가능한 입력을 이용할 수 있다.
특히, 판독 메트릭스 엔진(240)은 언어 특성 및 뷰잉 매체에 관련된 특성 함수로서 폰트 크기를 결정하는 실시예에 따른 방법에 적용한다. 뷰잉 매체의 특성은, 뷰잉 매체로부터 디폴트 거리를 결정하는 것을 포함하며, 필요한 경우에 사용자 입력에 의해 변경될 수 있다.
도 10을 참조하면, 플로우 다이어그램은 디스플레이로부터 디폴트 거리에서 폰트 크기를 계산하기 위한 방법을 예시한다. 방법은 블록(1010)에서, 임의의 디스플레이로부터 최소 거리의 지수함수 관계를 이용하여 디스플레이로부터 최소 및 최대 디폴트 거리를 결정한다. 하나의 실시예에서, 최소 거리는 12"로서 설정되고, 최대 거리는 약 27"로 설정된다. 지수함수 커브는 디스플레이가 커짐에 따라 더 큰 거리로 급속하게 가속한다. 함수 ad2+b=D는 디폴트 거리를 결정하는 데 적절한 지수함수의 예이다. 함수에서, a는 d2의 상수 승수를 나타내고, b는 a+b=12가 되도록 ad2에 가산되는 상수, 또는 판독자가 활자의 페이지를 뷰잉할 수 있는 최소 거리이다. D 및 d는 실제 판독 거리 및 디스플레이 크기의 그래프 상의 관측가능한 포인트들이다. 소문자 d는 디스플레이 표면의 대각선을 인치로 나타내고, D는 디스플레이 표면으로부터의 거리를 인치로 표시한다. 예에서, a 및 b는 a=0.02353 및 b=11.97647로 풀어지고, 포인트들이 72를 곱함으로써 변환되는 경우, 지수 함수적 커브는 도 11에 도시된 그래프와 같이 주어질 것이다. 도시된 바와 같이, x축은 디스플레이의 대각선을 일반적인 단위로 나타내고, y 축(1102)은 일반적인 단위의 디스플레이로부터의 거리이다. 도 11에서 그래프는 인치를 나타내지만, 예가 다른 단위로 변환된다면, a 및 b 상수의 유사한 변환이 만들어져야 할 것이다.
디폴트 디스플레이 거리가 결정된 후, 판독 메트릭스 엔진(240)에 의해 이 거리가 이용되어 소정 폰트에서 활자에 대한 디폴트 크기를 결정한다. 특히, 블록(1020)은 환경에서 판독하는데 적절한 소정 폰트에 대한 활자의 크기를 결정하기 위해 포비얼(foveal) 각도 및 문자 밀도의 삼각 함수를 이용한다. 본 명세서에서 이용되는 바와 같이, 소정 폰트에 대한 활자의 크기는 폰트 크기로서 지칭된다. 포비얼 각도는 뷰잉 매체 상에서 가장 예리한 포커싱가능 영역을 결정하는데 이용된다. 이 영역을 결정하기 위해서는, 함수는 뷰잉 표면으로부터의 거리에 의해 승산되는 포비얼 각도의 절반의 탄젠트 값의 2배를 이용한다. 다른 실시예에서, 거리를 결정하는데 이용되는 포비얼 각도는 대략 0.75도의 판독자 특정 포비얼 각도 또는 표준 포비얼 각도의 입력 중 하나 이상에 의해 결정된다. 판독자 특정 포비얼 각도는 판독자의 시력 예민함을 반영할 수 있다. 예를 들면, 판독자 특정 포비얼 각도는 망막 퇴보, 시력 손상, 시력 예리함, 터널시, 눈병, 근시, 원시, 난독증 및 난시 중 하나 이상을 고려할 수 있다. 포비얼 각도를 증명하기 위해, 도 12 및 13은 가장 예리한 포커스가능 영역이 결정되는 방법을 예시하는 그래프이다. 도시된 바와 같이, 눈(1202)은 뷰잉 거리(1206)로부터 뷰잉 표면(1204)을 본다. 인간 시력의 연구에 따르면, 0.75-도 포비얼 각도(1208)가 눈(1202)의 가장 예리한 포커스의 최대 각이다. 가장 예리한 포커스가능 영역의 길이(1210)를 결정하는 방법을 증명하는 것이 도 13에 도시되어 있다. 삼각 함수를 이용하면, 길이(1210)는 포비얼 각도(1304)의 절반의 탄젠트(1302)의 2배로서 기술될 수 있다. 다양한 연구에 기초한 인간 눈의 포비얼 각도는 대략 0.75도이다. 파라포비얼(parafoveal) 각도는 10 내지 12도이다. 포커스가 피크가 아니며 데이터가 인지 가능한 시야의 범위에 더하여, 눈의 위치 결정을 돕기 위해 머리의 비자발적인 이동이 시작되기 이전에 눈의 이동 범위는 약 12도이다. 하나의 실시예에서, 최적라인 길이에서 16 포비얼 고정의 추정이다. 클러스터의 개수는 문화적으로 정의된다. 영어 라인 길이의 연구는 오브젝티브 조사 및 책 디자인의 진전 관찰 모두에서 잘 문서화되어 있다. 영어에서, 조사 결과에 따르면, 포비얼 고정 당 즉시 식별가능한 활자의 문자는 약 4문자이다. 그러므로, 실시예는 라인당 4×16=64 클러스터에서 최적 영어 라인의 추정을 이용한다. 관찰에 따르면, 영어보다 클러스터당 더 많은 정보를 포함하는 문자 집합은 이해 속도를 증가시키기 위해 고정당 더 적은 클러스터를 필요로 한다는 것을 보여주고 있다. 이것은 절대적인 관계가 아니므로, 하나의 실시예는 그 언어에 대해 얼마나 많은 클러스터가 각 포비얼 고정에서 존재하는지를 언어별로 나타내는 테이블을 이용한다. 테이블은 언어별일 수 있고, 로마어, 아랍어, 태국어, 아시아어, 및 인도어를 포함하는 언어 그룹일 수 있다. 이들 그룹화는 기록 시스템의 특성에 의해 만들어진다. 임의의 개별적인 언어는 상이하거나 더 최적인 값을 가지도록 도시될 수 있다.
도 10을 다시 참조하면, 블록 1020은 폰트 크기를 결정하기 위해 문자 밀도를 이용한다. 문자 밀도는 고정 당 클러스터의 개수에 의해 em당 클러스터의 개수를 나눔으로써 결정될 수 있다. 언어 타입에 대한 고정 당 클러스터는 복수의 언어들 중 하나와 연관된 상수이고, 복수의 언어들 각각은 언어에서 판독하기 위한 정보 밀도를 표현하는 상수를 가지고 있다. em당 클러스터는 그래픽 밀도의 서술이다. 그러므로, 문자 밀도는 문자의 그래픽 밀도 및 정보 밀도의 함수로서 기재될 수 있다. 하나의 실시예에서, 그래픽 밀도 및 정보 밀도는 판독자에게 뷰잉가능한 가장 예리한 포커싱된 영역당 정보 양에 따라 언어의 판독 특성을 포함하는, 언어에 의존적이다.
하나의 실시예에 따르면, 판독 메트릭스 엔진(240)은 포비얼 고정당 클러스터들의 언어적 테이블을 포함하거나 이에 대한 액세스를 가지고 있다. 단일 포비얼 고정에서 이해가능한 클러스터의 최대 개수는 언어별 조사에 의해 결정되어, 테이블을 생성하며, 또는 판독 메트릭스 엔진(240)으로의 액세스가 주어진 사용자에 의해 입력될 수 있다. 각 언어는 파라포비얼 각도의 16분의 1과 같이 분수에서 볼 수 있는 클러스터의 개수를 정의한다. 그러므로, 모든 언어는 파라포비얼 각도당 클러스터의 결정 가능한 개수를 가지고 있다. 이 값은 라인 길이, 칼럼 폭 등을 결정하는데 이용될 수 있다. 하나의 실시예에서, 라인 길이에서 뷰잉될 수 있는 클러스터의 개수는 각 언어에 대해 대략 10개인 것으로 추정된다. 각 언어에 대해 결정된 클러스터의 개수는 알파벳간의 비교를 표현하는 숫자에 의해 승산될 것이다. 다르게는, 하나의 라인에서 클러스터의 개수를 결정하고 텍스트의 그 라인에서 인간 눈의 고정의 개수를 나타내는 상수에 의해 클러스터의 개수를 나눔으로써, 포비얼 고정당 클러스터의 개수를 결정한다. 하나 이상의 언어에 대한 상수는 대략 16이 될 수 있다. 고정당 클러스터의 개수는 파라포비얼 필드에서 포비얼 고정의 개수에 의해 승산되고, 이것은 판독가능한 라인당 클러스터의 최적 개수를 제공한다. 파라포비얼 각도는 포비얼 각도보다 더 넓은 각도이고, 일반적으로는 눈이 최대 포커싱가능한 영역을 볼 수 있는 각도를 지칭한다. 하나의 실시예에서, 파라포비얼 각도는 대략 10도이다. 상기 설명한 바와 같이, 포비얼 각도는 대략 0.75도이고, 포비얼 포커스 영역당 2개 및 4개 문자들 사이에서 관련된다. 16의 텍스트 라인에서 인간 눈의 고정 개수에 대한 상수를 이용하고, 포비얼 고정 당 클러스터의 개수에 의해 승산함으로써, 각 언어에 대한 라인당 클러스터의 개수가 표 1에 도시된 바와 같이 결정될 수 있다.
언어 고정 당 클러스터(Cpf) 라인 당 고정(16) 라인당 클러스터(Cpl)
영어 4 16 64
불어 4 16 64
독일어 4 16 64
그리스어 3.7 16 59.2
러시아어 3.5 16 56
아랍어 4.4 16 70.4
일본어 1.8 16 28.8
중국어 1.8 16 28.8
한국어 2.2 16 35.2
도 14를 참조하면, 문자 밀도를 결정하는 방법은 블록 1410에서 폰트에서 em 당 클러스터의 개수를 결정하는 것을 포함한다. 하나의 실시예에서, em 당 클러스터의 개수는 텍스트 엔진(250)으로부터 도출된다. 블록 1420에서, 폰트에서 em 당 클러스터의 개수 대 소정 포비얼 각도내의 가시 클러스터의 개수의 비를 결정하는 것은 이하에서 고정 당 클러스터로서 지칭된다. 상기 설명한 바와 같이, 고정 당 클러스터의 개수는 표 1과 같은 소스로부터 도출되거나 검색될 수 있고, 각 언어에서 각 폰트에 대해 상이하다. 블록 1430은 em 당 클러스터의 개수 대 고정 당 클러스터의 개수의 비를 포인트 단위의 뷰잉 매체의 폭에 의해 승산함으로써, 주어진 뷰잉 거리에서 폰트 패밀리에 대한 최적 포인트 크기를 얻는다. 블록 1440은 사용자 또는 다른 소스에 의해 입력되는 마크업에 따라 얻어진 폰트 크기를 선택적으로 스케일링한다. 블록 1450은 최소 폰트 크기 및 최대 폰트 크기를 결정하도록 제공한다. 특히, 하나의 실시예에서, 최소 폰트 크기는 사용자가 단일 포비얼 고정에서 포함할 수 있는 클러스터의 최대 개수에 기초하고 있다. 최대 폰트 크기는 사용자가 단일 포비얼 고정에서 이해할 수 있고 여전히 활자의 라인을 인지할 수 있는 클러스터의 최소 개수에 기초하고 있다. 다른 실시예에서, 최소 및 최대 폰트 크기는 최적 폰트 크기의 소정 백분율, 예를 들면 고정당 클러스터(Cpf)에 대한 테이블 값의 ±25%에 기초하여 결정될 수 있다. 이것은 최적 폰트 크기에 0.8을 승산한 것인 최소 폰트 크기 및 최적 폰트 크기에 1.33을 승산한 것인 최대 폰트 크기로 번역된다. 또 다른 실시예에서, 최소 폰트 크기는 출력 해상도 및 완전하게 폰트를 성공적으로 렌더링하는데 요구되는 화소의 최소 개수에 기초하여 렌더링 엔진에 의해 결정될 수 있다.
이제 도 15를 참조하면, 뷰잉 매체 상에서 최적 가독성을 위해 폰트에서 텍스트를 조정하기 위한 시스템(1500)이 도시된다. 시스템은 하나 이상의 텍스트 파라미터(1510)를 유지하는 데이터 구조를 포함하는 클라이언트 프로그램(200)을 포함한다. 시스템은 클라이언트 어플리케이션(200)에 결합되는 판독 메트릭스 엔진(240)을 더 포함하고, 판독 메트릭스 엔진(240)은 텍스트(1510)의 하나 이상의 파라미터를 수신하도록 구성된다. 판독 메트릭스 엔진(240)은 폰트에 대한 문자 밀도(1520)를 결정하도록 구성된 모듈, 및 눈의 가장 예리한 포커스 영역에 의해 문자 밀도를 승산하도록 구성된 모듈을 포함하여, 가독성을 위한 최적 폰트 크기(1530)를 생성한다. 문자 밀도 모듈(1520)은 API(1540)를 통해 텍스트 엔진(250)에 결합되어 폰트에 대한 em당 클러스터를 검색한다. 문자 밀도는 고정 당 클러스터에 의해 em 당 클러스터를 나눔으로써 계산된다. 하나의 실시예에서, 판독 메트릭스 엔진(240)은 폰트의 최적 크기의 함수를 통한 최적 칼럼 폭, 언어 활자에 대한 고정 당 클러스터의 개수, em 당 클러스터의 개수 및 뷰잉 매체로부터의 거리를 결정하도록 구성된 모듈을 더 포함한다. 시스템(1500)은 뷰잉 매체(1560)를 위한 렌더링 장치를 더 포함하고, 뷰잉 매체는 인쇄된 페이지, 컴퓨터 스크린, PDA, 홀로그래픽 이미지, 빌보드, 영화 스크린, 한 쌍의 유리의 인서트(insert) 등이 될 수 있다. 예를 들어, 언어가 영어이고(고정당 클러스터는 4.0임) 모니터로부터의 거리가 1368포인트(19인치)이며, 폰트가 Times New Roman(em 당 2.58 클러스터)이라면, 명백한 가독성을 위한 최적 활자 크기는 2 x tan0.006544 x 1368 x 2.58/4.0=11.5 포인트 활자에 의해 주어진다. em 당 2.33 클러스터만을 가지는 다른 폰트, Linotype Palatino에 대해, 최적 활자 크기는 2 x tan0.006544 x 1368 x 2.33/4.0=10.4 포인트 활자에 의해 주어진다.
다른 언어 및 스크립트 형태는 상당히 다른 결과를 산출한다. 예를 들어, 아랍 Times New Roman에 있어서, 고정 당 클러스터의 문화적 측정은 4.0보다는 4.4이고, em 당 클러스터의 개수는 2.97이다. 그러므로, 아랍어에서 Times New Roman에 대한 최적 판독가능 활자 크기는 2 x tan0.006544 x 1368 x 2.97/4.4=12.1 포인트 활자가다.
고정 당 클러스터에 대한 값이 각 언어 그룹에 대해 결정되어야 하지만, 공식은 터널시(tunnel vision), 뷰잉 표면으로부터의 거리 및 다른 시력 손상에 대한 액세스 성능 조정을 위해 여지를 남겨둔다. 이들은 공식으로의 입력에 작용하여 추출된 디폴트 값을 변경시킨다. 이들 특별 조정들 중 일부는 다중 칼럼의 작은 장치, 및 큰 스크린 고해상도 모니터와 같이 텍스트를 상이한 뷰잉 조건으로 맞추는데 도움을 주도록 자동화될 수 있다. 다른 실시예에서, 파라포비얼 각도, 포비얼 각도 및 문자 밀도는 장애 사용자, 장애자, 또는 더 심각한 시력을 가지는 사용자를 돕도록 하는 사용자 입력에 따라 변경될 수 있다. 더 좁은 파라포비얼 각도는 터널시의 사용자에 관련된다. 더 넓은 파라포비얼 각도는 심각한 주변시를 가지는 사용자에 관련된다. 더 좁은 포비얼 각도는 망막 쇠퇴를 가지는 사용자에 관련된다.
이제 도 7 및 도 8과 조합하여 도 16을 참조하면, 도 8의 블록 850은 폰트 크기 및 라인 높이를 계산하도록 제공한다. 본 기술 분야에 주지된 바와 같이, 라인 높이 요구는 라인의 길이에 따라 변경되고 다른 활자 크기에 대해 변경된다. 동일한 폰트 크기에 대해서라도, 라인 높이 요구는 페이지당 칼럼의 개수에 좌우되어 변경된다. 본 실시예에 따르면, 라인 높이는 가용한 정보에 좌우되어 상이한 방법으로 결정된다. 하나의 실시예에서, 활자 크기가 상기 설명한 바와 같이 결정된 후에, 그 크기의 활자에 대한 라인 높이가 결정된다. 그 라인 높이는 라인의 클러스터 개수, 라인 길이 등에 기초하여 조작될 수 있다.
라인 높이를 계산하기 위한 하나의 방법이 도 16을 참조하여 설명된다. 도시된 바와 같이, 판독 메트릭스 엔진(240)은 텍스트 엔진(250)으로부터 주어진 언어에서 주어진 폰트의 회색조에 관련된 복수의 계산을 수신한다. 이들 계산은 em당 클러스터(1610), 리버 폭(1620), 리버 깊이(1630), 채널 폭(1640) 및 채널 깊이(1650)를 포함한다. 판독 메트릭스 엔진(240) 내에서, 최적 판독가능 라인 높이 승산 모듈(1660)은 라인 높이를 계산한다.
특히, 하나의 실시예는 폰트의 문자 밀도를 이용하여, 폰트에서 텍스트에 대한 전체 리버 및 채널간의 콘트라스트 관계에 기초하여 라인 높이를 계산하는 것에 관한 것이다. 라인 높이(1610, 1620, 1630, 1640 및 1650)를 결정하는데 유용한 텍스트 엔진(250)으로부터의 5개의 출력이 더 상세하게 설명된다. 제1 출력은 리버 폭이다. 리버 폭(Rw)는 em-제곱의 승산자로서 폰트의 최상에서 폰트의 최하까지 측정된다. 리버 폭은 대부분의 라틴어와 동일한 em-제곱을 통상 가지지 않고, 아시아 폰트는 em-제곱보다 훨씬 더 적은 리버 폭을 가지고 있으며, 대부분의 아랍 및 태국 폰트는 em-제곱보다 훨씬 큰 리버 폭을 가지고 있다. 예를 들어, 도 17을 참조하면, 영어 Tahoma의 렌더링이 아랍어 Tahoma(1720)에 앞서 도시되어 있다. Tahoma에서 em에 대한 폰트 크기는 라인(1730) 및 라인(1740)의 사이로서 도시되어 있다. 예시는 영어 Tahoma가 em보다 더 작고 우측의 아랍어 Tahoma가 em보다 상당히 더 크다는 것을 보여주고 있다.
도 16을 다시 참조하면, 정규화된 리버 깊이(Rd)(1620)는 도 8에서 상기 설명한 바와 같은 측정된 텍스트의 대표 라인에서 화소의 가장 어두운 행으로 정규화되는 텍스트 엔진(250)내의 계산에 관련된다. 깊이의 모든 표현은 화소의 가장 어두운 행에 대한 것이 될 수 있다. 깊이는, 평균 블랙이고, 텍스트의 주어진 스팬(span)에서 화소들의 전체 비를 표시한다. RwXRd는 리버의 전체 그레이 값을 제공한다.
채널의 그레이 값은 리버 채널 폭(RCw) 및 리버 채널 깊이(RCd)에 기초하여 동일한 공식을 이용하여 계산된다. 리버의 전체 그레이 값에 의해 채널의 그레이 값을 나눔으로써, 채널과 리버의 나머지간의 콘트러스트 정도가 제공된다.
최적 판독가능 라인 높이 승산자 모듈(1660)은 폰트의 문자 밀도(Cpm)에 의해 채널 그레이 값 대 전체 그레이 값의 비를 나눔으로써 결정되어, 라인 높이에 대한 폰트 크기에 부가되는 폰트 크기의 분수를 산출한다. 이 숫자에 1을 더함으로써, 시스템은 폰트 크기의 승산자로서 최적 라인 높이(LO)를 생성한다. 이하의 등식, (1+((RCw x RCd)/(Rw x Rd)/Cpm))x LΔ = LO는 최적 판독가능 라인 높이 승산자 모듈내의 액션을 요약한다.
하나의 실시예에서, 라인 높이는 최적 라인-높이가 완성되기 전에 마크업 라인 높이 스케일(LΔ)에 의해 승산된다.
다른 실시예에서, 텍스트 엔진(250)으로부터의 계산은 Bh=샐로우 이전의 폭, Bd=샐로우 이전의 깊이, Ah=샐로우 이후의 폭, Ad=샐로우 이후의 깊이, RCw=채널 폭, RCd=채널 깊이, Cpm=em 당 클러스터, FS=디폴트 폰트 크기를 포함하고, 이하의 등식, 즉 FS/(((BhxBd)+(AhxAd)+(RCw+RCd))xC pm)=라인 높이는 최적 판독가능 라인 높이 승산자 모듈(1660)에서 결정되어, 라인 높이를 계산한다.
환언하면, em당 클러스터 개수에 의해 승산되고 폰트 크기로 나누어진 리버의 3개 부분에 대해 깊이에 의해 승산된 폭의 합은 라인 높이를 제공한다. 그러므로, 10 포인트 Times New Roman은 10/(((0.24x0.09) + (0.45x0.6) + (0.22x0.04)) x 2.58) = 10/(0.0216+0.27x0.0088)x2.58 = 10/0.775032=12.9로서 계산된다.
동일한 방법의 더 단순한 버전은 이하의 공식, FS/(RdxRwxCpm)=L을 이용한다.
다른 실시예들에서, 텍스트 높이의 120%의 영어 텍스트에 이용되는 전형적인라인 높이 조정은 다른 언어들에 대한 라인 높이를 글로벌화시키는데 이용된다. 이러한 알려진 120%를 이용하는, 라인 높이를 결정하는 다른 방법이 도 18에 기재된다. 블록 1810에서, 디폴트 라인 높이는 폰트 크기의 120%를 취함으로써 결정된다. 블록 1820에서, 디폴트 라인 높이는 소정 폰트에서 단일 클러스터의 평균 폭의 지수함수를 적용함으로써 변경된다. 특히, 이 함수는 임의의 폰트에서 임의의 단일 클러스터의 평균 폭 및 실제 활자의 높이의 제곱의 합의 제곱근이 될 수 있다. 임의의 클러스터의 실제 높이 및 폭은 임의의 국제적 폰트에 대해 텍스트 엔진(250)에서 결정될 수 있다. 하나의 실시예는 이하의 식, 1.2FS(Rw 2+(1/Cpm 2))1/2를 이용하고, 상기 식은 디폴트 활자의 크기로서 FS, 사용자 입력 또는 표준 디폴트 라인 높이 승산자로서 1.2, em 당 그 탑 잉크로부터 그 기저 잉크까지의 활자의 실제 높이로서 Rw, 및 em 당 클러스터의 개수로서의 Cpm을 가지는 지수 함수이다.
예로서, 10포인트의 디폴트 폰트 크기에 대해, 라인 높이는 10x1.2x(0.912+1/2.582)1/2=12x0.9891=11.9로서 계산된다.
여기에서, Times New Roman 10 포인트에 대한 최적 라인 높이는 11.9 포인트가 될 것이다. 그러나, em 당 1.01의 잉크로 인쇄된 높이 및 em 당 2.33 클러스터를 가지는 10 포인트 Linotype Palatino 폰트에 적용된 경우에, 동일한 공식은 13.2 포인트의 최적 라인 높이를 산출한다.
다른 실시예에서, 라인 길이가 증가하면, 라인 높이가 변경된다. 도 19를 참조하면, 플로우 다이어그램은 텍스트의 라인의 물리적 길이의 함수 또는 라인의 클러스터의 개수에 기초하여 라인 높이를 조정하는 것을 예시하고 있다. 블록 1910은 활자의 라인 당 원하는 클러스터 개수 및 활자의 라인 당 클러스터에서 최적 디폴트 라인 길이를 결정한다. 블록 1920은 라인당 원하는 클러스터 개수 및 라인 당 클러스터에서의 최적 디폴트 라인 길이를 이용하여 몫(quotient)에 의해 원래 활자 크기를 스케일링한다.
일단 라인 높이가 폰트 크기에 따라 결정되면, 폰트 크기를 변경하면 라인 높이를 변경하게 된다. 폰트 크기가 더 커지면, 라인 높이를 구하는 것은 선형 관계가 아니다. 하나의 실시예에서, 폰트 크기의 변경에 대한 라인 높이의 변경은 지수함수적 관계를 가지는 함수를 인가함으로써 구해질 수 있다. 지수 함수는 em 당 클러스터의 개수의 고려를 포함할 수 있다. 원래의 활자 크기가 주지되어 있고, 그 활자 크기에 대한 라인 높이가 주지되어 있다. 더 큰 활자 크기 변경에 대한 제한이 있다. 라인 높이는 활자 자체보다 더 작을 수 없다. 그러므로, 도 20을 참조하면, 그래프(200)는 주어진 폰트 크기에 대해 경험적으로 구해진 라인 높이 확률을 포인트 단위로 예시하고 있다. x-축(2002)은 폰트 크기를 포인트로 표현하고, y-축(2004)은 라인 길이를 포인트 단위로 표현한다. 45도 라인(2010)은 폰트 크기와 동일한 라인 높이를 예시한다. 폰트 크기가 증가함에 따라, 라인 높이의 크기가 선형 관계를 따르지 않는다. 오히려, 폰트 크기가 증가함에 따라, 요구되는 라인 높이는 라인(2020)으로 도시된 바와 같이 감소된다. 하나의 실시예에서, 라인 높이를 결정하는 자동적인 방법은 지수 함수를 이용한다. 함수는 em 당 가변 클러스터를 이용한다. 특히, 1.02 내지 1.07 범위의 상수의 거듭제곱을 이용하는 거듭제곱 함수가 이용될 수 있다는 것을 발견했다. 또한, 모든 활자에 대해 이용가능한 상수가 1.047이라는 것을 발견했다. 이러한 상수는 대략 π3에 거의 동일하다. 다른 변수는 하위 호환성에 관련된다. 30 포인트 활자에 대한 20% 라인 높이가 적용된 경우, 다른 폰트 크기는 방법이 시작되는 곳에 관계없이 동일한 폰트 크기에 대한 동일한 라인 높이를 관련시키고 제공해야 한다.
이제, 도 21을 참조하면, 플로우 다이어그램은 폰트 크기를 결정하기 위한 방법을 예시하고 있다. 블록 2110은 소정 판독가능한 라인 길이 및 폰트 크기에 관련하여 라인 높이에 대한 적절한 디폴트 스펙을 결정한다. 블록 2120은 지정된 디폴트와 상이한 폰트 크기에 의해 야기되는 폰트 크기에 대한 값의 임의의 변경을 결정한다. 주지된 바와 같이, 더 큰 활자는 폰트 크기의 인자로서 더 적은 라인 높이를 요구한다. 종래 기술 방법은 디자이너가 눈으로 조정하도록 요구한다. 활자가 빽빽하게 보이면, 디자이너는 라인 공간을 부가한다. 활자가 느슨하게 나타나면, 디자이너를 라인 공간을 줄인다. 블록 2130은 최적 디폴트 폰트 크기와 실제 폰트 크기 간의 차이를 결정하고 블록 2140에서, 폰트 크기의 차이로 거듭제곱되는 상수에 의해 라인 높이를 조정하는 것을 통해 새로운 라인 높이를 자동으로 결정하도록 제공한다. 등식, (1.407(FSO-FSA) x (Lo/FSo-1))xFSA=LA는 방법에 따라 새로운 라인 높이를 결정하기 위한 하나의 실시예를 나타낸다. 등식에서, FSo는 원래 디폴트 폰트 크기를 나타내고, FSA는 새로운 폰트 크기를 나타내며, Lo는 원래 디폴트 라인 높이를 나타내고, LA는 새로운 라인 높이를 나타낸다.
예를 들어, 14 포인트 폰트 크기에서 Times New Roman에 대한 새로운 라인 높이를 구하려면, 10 포인트 폰트 크기 및 12.9 포인트 라인 높이로 상기 설명한 방법에 따라 결정될 수 있고, 등식은 이하, 즉 (1.407(10-14)x(12.9/10 - 1)+1)x14=((1.047-4x0.29)+1)x14=((0.8321x0.29)+1)x14=1.2413x14=17.38과 같이 제공한다.
판독 메트릭스 엔진 플로우
이제, 도 22를 참조하면, 플로우 다이어그램은 입력에 대해 판독 메트릭스 엔진(240)이 작동되는 방법 및 각 계산된 측정이 다른 측정을 결정하도록 공유되는 것을 도시한다. 도 22는 상기 설명한 실시예들이 판독 메트릭스 엔진(240)의 전체 시스템에 맞추는 방법을 도시하고 있다.
블록 2202는 고정 당 클러스터 언어 테이블 또는 다른 소스로부터의 입력을 표현한다. 블록 2202는 블록 2204로 진행하여, 최대 판독 가능한 라인 당 클러스터를 출력한다. 계산은 표 1에 따를 수 있다.
블록 2206은 스크린 대각선과 같은 뷰잉 매체의 크기에 대한 값을 제공하는 컴퓨터 시스템으로부터의 입력을 표시한다. 블록 2208은 뷰잉 매체로부터 디폴트 거리를 결정하기 위한 계산을 나타낸다. 디폴트 거리를 결정하기 위한 하나의 방법은 도 10을 참조하여 설명한다. 블록 2210은 사용자에 의해 입력될 수 있거나 마크업 페이지에 의해 입력될 수 있는 입력 '폰트 스케일'을 제공한다. 그러한 마크업은 <Element Fontscale="1.2"> 요소 내용(/Element)과 닮을 수 있다.
블록 2210, 2212, 2208 및 2202는 각각 최적 판독가능 폰트 크기를 계산하기 위한 입력을 제공한다. 블록 2214는 최적의 판독가능 폰트 크기를 계산하는 것을 나타낸다. 상기 설명한 바와 같이, 최적 폰트 크기를 구하는 것은 첫 번째로 소정 거리에서 소정 포비얼 각도내에서 뷰잉 매체 상에서 수평 표면 영역을 결정하고, 주어진 언어 및 폰트에 적절한 고정 당 클러스터의 개수에 따라 크기 활자를 결정하는 것을 포함한다. 하나의 실시예에서, 폰트 스케일(2210)은 폰트 크기를 결정하기 위한 승산기를 제공한다.
블록 2214는 블록 2216에 대한 입력을 제공하고, 이는 최소 및 최대 폰트 크기를 결정하도록 제공한다. 하나의 실시예에서, 최소 및 최대 폰트 크기는 최적 폰트 크기로부터 25% 편차에 기초하고 있거나, 최소 폰트 크기에 대해서는 소정 폰트 크기에 0.8을 승산하고, 최대 폰트 크기에 대해서는 소정 폰트 크기에 1.33을 승산한다. 다른 실시예에서, 단일 포비얼 고정에서 이해할 수 있는 클러스터의 최대 개수는 주어진 언어에 대한 최소 폰트 크기 및 최대 폰트 크기를 결정한다.
블록 2218, 2220, 2222, 2224는 도 15를 참조하여 상기 설명한 바와 같이 최적 판독가능 라인 높이 승산기(2228)를 결정하기 위한 입력을 제공하는 텍스트 엔진(250)으로부터의 출력을 표현할 수 있다. 하나의 실시예에서, 블록 2228은 <Element LineHeightScale="1.5">요소 내용</Element>과 같은 마크업 또는 사용자 입력으로부터 라인 높이 스케일 입력(2226)을 수신한다.
블록 2230은 라인 당 클러스터의 최소 및 최대 개수를 결정하도록 제공한다. 최소 및 최대 라인 길이는 사용자에 의해 입력될 수 있는 칼럼 선호도 옵션을 지원한다. 하나의 실시예에서, 낮은 칼럼 선호도는 몰두 독서를 위한 최적 판독 가능 라인 길이를 클러스터 단위로 제공한다. 중간, 높은, 및 최대 칼럼 선호도 옵션들은 더 적은 클러스터를 갖는 더 짧은 라인을 점진적으로 제공한다. 단일의 칼럼 선호도는 몰두 독서 표준을 넘어 라인 길이를 클러스터 단위로 확장한다.
하나의 실시예에서, 증가는 일정하고, 라인당 최적 클러스터의 절반으로부터 최적의 1.167배까지의 범위이다. 클러스터 단위의 최소 라인 길이(Cm) 및 클러스터 단위의 최대 라인 길이(CM)을 결정하려면, 이하의 등식, Cm=0.5 x Cpl, CM=1.167xCpl이 적용된다.
최대 판독가능 라인 당 클러스터의 개수(2204), 최소 및 최대 판독가능 폰트 크기(2216) 및 em 당 클러스터의 개수(2212)와 더불어, 라인 당 최소 및 최대 클러스터(2232)는 최적 최소 및 최대 칼럼 폭이 결정되는 블록 2232에 대한 입력들이다.
최소 칼럼 폭은 최소 폰트 크기를 계산하고 라인 상에서 허용된 클러스터의 가장 작은 개수를 최소 폰트 크기에 승산함으로써 결정될 수 있다. 이하의 등식들, 즉 CWo=(FSo/Cpm)xCpl(최상 판독가능 라인당 클러스터), CWm=(FSm/Cpm)xCm(최상 판독가능 라인당 최소 클러스터), CWM=(FSM/Cpm)xCM(최상 판독가능 라인당 최대 클러스터)는 각각 최적, 최소, 및 최대 칼럼 폭을 결정한다.
최적, 최소, 및 최대 칼럼 카운트(2242)를 결정하기 전에, 판독 메트릭스 엔진(240)은 우선 잠재 라이브 매터 폭(2240)을 결정한다. 라이브 매터 영역은 페이지의 마진내에 존재하는 레이아웃 영역이다. 잠재 라이브 매터 영역은 윈도우 크기와 사용자-정의 마진 선호도간의 차이이다. 마진은 페이지의 가장 짧은 치수에 기초하여 계산된다. 그러므로, 평가 단계는 우선 페이지의 수직 치수 또는 수평 치수가 가장 짧은 지를 결정하는 것이다. 마크업에서 요구되는 마진의 양은 가장 짧은 치수로부터 감산된다. 결과는 라이브 매터 영역이다. 잠재 라이브 매터 폭을 결정하기 위한 입력은 윈도우 폭(WW, 2234), 윈도우 높이(WH, 2236), 및 사용자 마진 선호도(MP, 2238)를 포함한다. 그러므로, 잠재 라이브 매터 영역(LWo)의 폭을 결정하기 위해서는, 마크업 마진 선호도(MP)가 윈도우 폭(포인트 단위)로부터 감산되어 윈도우의 가장 짧은 치수에 의해 승산된다, 즉 WW-(최소(WW, WH)xMPx2)이다.
잠재 라이브 매터(2240) 및 최적, 최소 및 최대 칼럼 폭(각각 CWo, CWm 및 CWM)(2232)는 최적, 최소 및 최대 칼럼 카운트(CCo, CCm, CCM)(2242)를 결정하는 입력을 제공한다. 하나의 실시예에서, 칼럼 카운트를 결정하기 위해, 등식은 잠재 라이브 매터 폭에 맞을 수 있는 각 폭의 칼럼의 개수를 계산한다. 출력은 페이지에 맞는 최소, 최대 및 최적 칼럼 개수의 범위를 제공한다. 가능한 칼럼 카운트(CC)는 칼럼 폭을 잠재 라이브 매터 폭으로 나눔으로써 최소, 최대 및 최적 칼럼 폭에 대해 계산될 수 있다. 이하의 등식, 즉 CCo=LWo/CWo, CCm=LWo/CWM, CCM=LWo/CWm은 최적, 최소 및 최대 칼럼 카운트를 결정하는데 적용된다.
블록 2244 및 2246을 참조하면, 칼럼 카운트가 결정된 후에, 판독 메트릭스 엔진(240)은 선호되는 칼럼의 실제 개수를 결정하기 위해 카운트 및 사용자 입력 칼럼 선호도를 이용한다.
실제 개수 계산은 블록 2242의 등식이 칼럼의 전체 개수를 산출하지 않으므로 필요하다. 블록 2242에서, 칼럼 선호도(2244)를 통해 요구되는 칼럼의 실제 개수는 적절한 전체 칼럼(CCA)으로 반올림된다. 하나의 실시예에서, 블록(2246)이 평가적이다. 칼럼 선호도="단일"("0")라면, CCA는 자동으로 1과 같게 된다. 칼럼 선호도="낮음"("1")이라면, CCA는 CCo로부터 반올림될 것이다.
칼럼 선호도(CP)="중간/높음"("2/3")이라면, CCA는 계산되어야 된다.
칼럼 선호도(CP)="최대"("4")라면, CCA는 CCM으로부터 반올림될 것이다.
중간 및 높은 계산은 최적 및 최대간의 1/3 및 2/3이 될 것이다. 그러므로, CCA는 ((CCM-CCo)/3)+CCo(중간), (((CCM-CCo)/3)x2)+CCo(높음)으로부터 반올림될 수 있다.
이하의 의사 코드는 블록 2246의 동작을 설명한다.
IF CP=0
THEN CCA=1
ELSE CCA=(((CCM-CCo)/3) x (CP-1)+CCo
전체 칼럼 개수에 대한 반올림은 요구된 칼럼 개수가 0.75를 초과하는 부분 칼럼을 가지는 경우에 올림되고, 그렇지 않으면 내림된다. 0.75의 값은 사용자 또는 저자 입력에 의해 변경될 수 있다.
블록 2248은 라이브 매터 폭을 결정하도록 제공하고, 블록 2232로부터의 입력을, 블록 2240으로부터의 최적, 최소 및 최대 칼럼 폭을, 블록 2240으로부터의 잠재 라이브 매터 폭을, 칼럼 선호도, 및 블록 2246으로부터의 칼럼 카운트를 수신한다.
실제 라이브 매터 폭(LWA)은 이전에 계산된 잠재 라이브 매터 폭(LWo)보다 결코 크지 않으므로, 계산은 계산된 값과 잠재 폭을 비교하여 어느 것이 더 작은지를 증명한다. 더 적을 수록 결정적이다. 라이브 매터 폭을 계산하는 것은 또한 칼럼 선호도에 대한 사용자의 마크업에 기초하는 특별 경우를 가지고 있다. 칼럼 선호도="단일"인 경우에, 블록 2248은 라인 당 클러스터(2204) 및 폰트 크기(2214)의 파라미터 내에 맞을 정도로 큰 페이지 상의 칼럼을 제공한다. 칼럼 선호도가 "낮음(Low)"이라면, 판독 메트릭스 엔진(240)은 최적 판독 경험을 시도한다. 더 높은 칼럼 선호도는 가용한 공간의 폭에 의해 제한될 수 있다. 이하의 의사코드는 라이브 매터 폭의 결정을 설명한다.
IF CP=0,
THEN Minimum of CWM or LWo = LWA
ELSE
IF CP=1,
THEN Minumum of (CCAxCWo)+(CWo x(CP-1)x0.75) or LWo=LWA
ELSE LWo=LWA
칼럼 카운트(2246) 및 라이브 매터 폭(2248)은 블록(2250)으로의 입력이고, 이는 실제 여백(gutter) 폭(CGA)을 계산한다. 여백 폭은 마크업 속성 칼럼 갭과 동일할 수 있다. 하나의 차이점은 블록 2250에 대한 측정 유닛은 칼럼의 소수부에 기초할 수 있지만, 멀티-칼럼 스프레드에서 칼럼의 측정에 약간 영향을 미칠 수 있다는 점이다. 이하의 등식, 즉 (LWA/CCA)x0.075=CGA는 실제 여백 폭(CGA)을 결정할 수 있다.
블록 2252를 참조하면, 일단 실제 여백 폭이 결정되면, 마크업 속성 칼럼 폭과 동일할 수 있는 실제 칼럼 폭(CWA)이 결정될 수 있다. 칼럼 카운트, 라이브 폭, 및 여백이 일단 알려지면, 실제 칼럼 유닛이 이하의 등식 (LWA/CCA)-((CCA-1)xCGA)=CWA를 이용하여 계산될 수 있다.
블록 2254를 참조하면, 판독 메트릭스 엔진(240)은 블록 2252, 2212, 2214, 및 2230으로부터의 입력을 이용하여 실제 폰트 크기(FSA)를 계산한다. 하나의 실시예에서, 실제 폰트 크기는, 레이아웃에 대한 추천된 폰트 크기(FSr)를 계산하고, 이 폰트 크기가 이전에 계산되었던 범위내에 있도록 보장하도록 최소 폰트 크기 및 최대 폰트 크기에 대하여 추천된 폰트 크기를 체킹함으로써 수행된다. 전자의 것은 라인상에 나타나는 클러스터 개수로 인해 최적 폰트 크기를 이용하도록 라인이 너무 긴지 또는 너무 짧은지를 결정하는 조건 프로세스이다. 클러스터 개수의 범위가 최적 폰트 크기에서 초과한 경우에만, 폰트 변경 크기가 수행된다. 이하의 의사코드는 블록 2254를 위한 계산을 수행한다.
IF: CWA > FSo x CM ÷Cpm
THEN CWA ÷ CM x Cpm
ELSE IF: CWA < FSo x Cm ÷Cpm
THEN: CWA÷Cm x Cpm
ELSE: FSo=FSr
실제 폰트 크기(FSA)를 종료시키는 한계 체킹이 또한 조건적이다.
IF: FSr > FSM
THEN FSM
ELSE IF: FSr < FSm
THEN: FSm
ELSE: FSr=FSA
이제, 블록 2256을 참조하면, 라인당 실제 클러스터 계산이 블록 2254 및 블록 2252에서 결정된 값을 이용하여 수행된다. 라인당 실제 클러스터는 특정 폰트에 대한 라인 높이의 적절한 양을 결정하는 전조(precursor)이다. 이하의 등식, (CWA/FSA)xCpm은 라인당 클러스터를 결정한다.
블록 2258를 참조하면, 판독 메트릭스 엔진(240)은 이러한 환경에 대해 대부분의 판독가능 텍스트에 적용될 폰트 크기의 승산자로서 실제 라인 높이(LA)를 결정한다. 실제 라인 높이를 결정하기 위한 방법은 적어도 2개의 조정을 포함한다. 우선, 판독 메트릭스 엔진(240)은 FSA≠FSo인 경우, 폰트 크기에 대한 라인 높이를 최적화한다. 최적화를 통해, 더 큰 폰트는 더 작은 폰트와 같이 큰 라인 높이를 비례적으로 수용하지 않는다는 것을 보장한다. 다음으로, 판독 메트릭스 엔진(240)은 라인의 길이에 대한 라인 높이를 조정한다. 이하의 등식, ((CA x (1.047(FSo-FSA)x(Lo-1)))/Cpl)+1은 최적화 및 조정을 수행한다.
등식의 이하의 부분, 즉 (1.047(FSo-FSA)x(Lo-1)은 폰트 크기에 대해 조정한다. 나머지는 라인 길이에 대해 조정한다. 결과는 실제 칼럼 폭에서 실제 폰트 크기에 대한 최적 라인 높이이다.
도 20을 다시 참조하면, 등식의 폰트 크기 부분은 도 20에 나타난다. 도 23은 라인 길이 조정의 그래프(2300)를 예시한다. 도시된 바와 같이, x-축(2302)은 폰트 크기를 나타내고, y-축(2304)은 라인 높이를 나타낸다. 조정은 라인(2323), 및 라인의 1.5배의 길이인 라인(2330)에서 도시된 길이의 절반인 라인에 대한 라인(2320, 2020과 동일함)에 수행되었다.
다시, 도 22를 참조하면, 블록 2260은 실제 디폴트 헤딩 폰트 크기가 바디 텍스트 폰트-크기와 거의 동일한 방식으로 계산되지만 라인당 최소 클러스터(Cm) 및 실제 라이브 매터 영역의 폭(LWA)의 사용자 설정가능한 0.75배에 기초한다는 것을 제공한다. 이하의 등식, HFSA=LWA/(0.75xCm)xCpm이 적용된다.
하나의 실시예에서, 헤딩 폰트 크기는 판독 메트릭스 엔진(240) 포인트 출력에 대한 스케일의 상부 엔드를 고정시킨다.
블록 2262를 참조하면, 헤딩 폰트 크기(HLA)에 대한 디폴트 라인 높이는 바디 텍스트 폰트 크기(2258)에 대한 실제 라인 높이와 동일한 등식에 따라 결정된다. 승산자는 FSA라기보다는 HFSA에 기초하여 생성되고, ((0.75xCmx(1.407(FSo-HFSA)x(Lo-1)))/Cpl)+1=HLA와 같이 라인당 최소 클러스터(Cm)의 사용자 설정가능한 0.75배이다.
라인 높이는 라인 길이 및 폰트 크기에 기초하여 가변적이고, 폰트 크기의 승산자에 대한 바디 텍스트 크기 및 헤딩 크기간의 상이한 연속체(continuum)를 형성한다. 그러므로, 바디 텍스트가 폰트 크기의 1.16배의 라인 높이를 가지는 경우, 헤딩 폰트에 대한 라인 높이는 헤딩 폰트 크기의 단지 1.05배만이 될 수 있다.
이제, 블록 2264를 참조하면, 판독 메트릭스 엔진 포인트는 실제 헤딩 폰트 크기(2260) 및 실제 폰트 크기(2254)로부터의 입력을 이용하여 결정된다. 판독 메트릭스 엔진 포인트는 2개의 인쇄 기준 포인트, 즉 레이아웃을 위한 최적 판독가능 폰트 크기, 및 윈도우의 폰트에 대한 최적 상부 레벨 헤딩 크기에 관련된다. 이들 사이에서, 판독 메트릭스 엔진(240)은 설정된 개수의 증가들을 플롯팅하고, 이들 각각은 그 폰트 패밀리에 대한 인쇄 포인트로서 교차된다. 1/72"의 "실제" 포인트와 판독 메트릭스 엔진 포인트 사이에서 전달하기 위해, 상부 및 기저에 대한 등가(equivalent)가 생성될 수 있다.
판독 메트릭스 엔진 포인트의 값은 디폴트 윈도우 폰트 크기와 계산된 실제 폰트 크기의 비교에 기초한다. 디폴트는 12 포인트이다. 그러므로, 판독 메트릭스 엔진(240) 값으로의 변환시, 12-포인트 활자에 대한 임의의 참조는 FSA에 대한 참조로서 해석된다. 12 포인트 이하의 크기는 FSA를 12 부분들로 분할하는 승산자에 의해 해석된다. 여기에서, 판독 매트릭스 엔진 포인트 =FSA/12이다.
그러나, 12 포인트 이상의 판독 메트릭스 엔진 포인트의 값은 12포인트 또는 그 이하의 포인트 값과 반드시 동일할 필요는 없다. 상기 판독 메트릭스 포인트의 값은 48 포인트(Windows®텍스트 폰트 크기 디폴트와 같은 디폴트)의 미리 설정된 최적 헤딩 크기와 12-포인트 바디 텍스트 크기 사이의 공간 분할에 기초한다. 그러므로, 12 포인트 이상에서, 공식은 판독 메트릭스 엔진 포인트=(HFSA-FSA)/36이 된다.
임의의 마크업 폰트 크기(FSμ)의 출력 크기를 계산하기 위해서는, 이하와 같이 복합 공식이 된다.
IF, FSμ≤12,
THEN, FSμ x FSA÷12
ELSE, ((FSμ-12)x((HFSA-FSA)/36))+FSA
이러한 오퍼레이션의 결과로서, XXSmall, XSmall, Small, Medium, Large, XLarge, XXLarge에서와 같이 캐스캐이딩 스타일 시트(CSS)와 같은 표준으로부터 생성되는 폰트 크기에 대한 디폴트 측정, 및 모든 헤딩 레벨 1-7에 대한 디폴트 값들를 포함하는 임의의 마크업된 폰트크기가 판독 메트릭스 엔진 포인트의 값에 따라 해석될 수 있다. 유의할 점은, 판독 메트릭스 엔진 포인트는 폰트크기 포인트에만 적용되고, 포인트 단위의 임의의 다른 측정에는 적용되지 않는다는 점이다.
블록 2266을 참조하면, 실제 마진 값은 일부 다른 단위들(특히 칼럼)의 값들을 조정할 조합에 이용될 수 있는 "마진"이라 불리는 단위이다. 실제 마진(MA)은 라이브 매터 폭(LWA) 또는 윈도우 높이, 및 마진 선호도(MP) 중 더 적은 것으로부터 하위로 작용한다. 윈도우 높이가 라이브 매터 폭보다 작은 경우, 실제 마진은 마진 선호도의 윈도우 높이 배이다. 그러나, 라이브 매터 폭이 윈도우 높이보다 작으면, 판독 메트릭스 엔진은 1-마진 선호도에 의해 나눠지는 라이브 매터 폭으로부터 하위로 작용한다. 그러므로, 마진(MA)에 대한 공식은 이하와 같다.
IF, WH<LWA
THEN, WH x Mp
ELSE, ((LWA/(1-2Mp))-LWA)/2
블록 2268을 참조하면, 과거 500년동안 레이아웃 디자이너의 기본 툴은 그리드(grid)였다. 그러나, 이 그리드는 주어진 페이지 크기에서 단지 하나의 배포물에 관련된 정적 툴로서 간주되었다. 여기에 참조로 첨부된 인쇄된 페이지의 디자인(Watson-Guptill Publications, NY, NY 1977, 1989, Page 82)이라는 1977 북 레이아웃에서 알렌 헐버트는 아래와 같이 언급한다.
디자이너의 그리드는 그것이 차지하는 정확한 공간에 관련하여 특정 내용을 조직화한다. 그리드가 동작하는 경우에, 디자이너는 그리드의 프레임워크내에서 다양한 요소들을 포함하는 많은 다른 레이아웃을 생성할 수 있도록 허용한다. 간행물, 광고 캠페인, 또는 시리즈의 디자인에 이용되는 경우, 이것은 각 단위의 내용에 상당한 변동이 있음에도 순차적인 연속성의 느낌을 준다.
헐버트는 상기 문헌과 나중 문헌 "The Grid(1978) 및 The Design Concept(1981)에서 모두 양호한 그리드의 중요성과 필요성을 강조하지만, 그리드의 정적 특성이 정확하게 디자이너가 이용하기에 유용하게 만드는 것이라는 것을 반복해서 강조한다. 그러나, 디스플레이 크기와 모양이 미리 알려지지 않은 전자 세계에서, 디자이너는 디스플레이의 크기와 형태를 미리 고정하지 않는다면 신뢰할 만한 그리드를 생성할 수 없어 당황해하고 있다.
판독 메트릭스 엔진(240)은 넓은 범위의 디스플레이 및 폰트 크기에 걸쳐 다이나믹하고 스케일가능한 그리드 단위(GU)(2268)를 출력한다. 블록 2268로의 입력은 실제 칼럼 폭(CWA, 2252), 실제 폰트 크기(FSA, 2254), 최상 판독가능 라인 당 클러스터(Cpl) 및 em 당 클러스터(Cpm)를 포함한다. 각 그리드 단위의 폭은 칼럼의 실제 폭(CWA)으로 밸런싱되는 라인당 최적 클러스터(Cpl)의 결정에 기초한다. 등식은 6에 의해 Cpl을 나누고, 그리고 나서 그 길이의 얼마나 많은 단위가 FSA에서 CWA에 맞는지를 결정한다. 분수 단위는 전체 그리드 단위의 폭에 고르게 확산된다. 여기에서, GUA=CWA/Trunc((6xCWAxCpm)/(FSA x Cpl))이다.
그리드는 그 폭에 기초하여 단일 측정을 가지고 있다. 그리드 단위가 높이 단위에 대한 값으로서 이용된다면, 폭의 값과 동일한 값을 가진다. 하나의 실시예에서, 그리드 단위는 다이나믹하고, 수평 공간과는 달리 수직 공간을 분할한다.
블록 2270을 참조하면, 칼럼 단위는 높이 및 폭에 이용되는 경우에 상이한 치수를 가지고 있다. 그러므로, 마크업에 이용되는 경우, 1 칼럼의 폭은 1 칼럼의 높이와는 상이한 측정을 가지고 있다. 하나의 실시예에서, 실제 칼럼 높이는 라인의 전체 개수에 의해 분할가능하다. 그러므로, 마진보다 작은 윈도우의 높이(WH)는 잠재 라이브 매터 높이(LHo)와 동일하다. 라인(LA)에 의해 나누어진 LHO, 의 잘라버림(truncated) 곱하기 라인은 칼럼 높이(CH)와 동일하다. 환언하면, WH-(2xMA)(또는 마크업이 1MA 마진보다 더 깊은 것은 나타내면 다른 복수)=LHO이다. (Truncated(LHO/LA))x LA = CH이다.
블록 2272를 참조하면, 실제 페이지 높이(Pw)는 칼럼 폭, 여백 폭 및 좌우 마진의 합과 동일하다. 그러므로, PW=(CWAxCCA)+(CGAx(CCA -1))+(2xMA)이다.
그러므로, 페이지는 폭과 비교할 때 높이에서 다른 치수를 가지고 있고, 이들은 윈도우의 크기와 동일하지 않을 수도 있다.
도 22와 조합하여 도 2를 다시 참조하면, 라인 높이, 칼럼 및 폰트 크기를 결정하기 위해 상기 설명한 방법들은 텍스트 렌더링을 위해 뷰잉 매체 상에 가독성을 위한 최적 크기의 자동적인 결정을 가능하게 한다. 각 경우에, 여기에 제공된 방법을 구현하기 위한 적절한 장치는 방법을 구현하는 마이크로프로세서와 같은 컴퓨터 컴포넌트를 포함할 수 있다. 예를 들어, 최적 폰트 크기를 결정하기 위해, 프린터나 프린터와 통신할 수 있는 핸드헬드 컴퓨팅 장치 또는 렌더링 장치와 같은 장치는 뷰잉 매체의 폭 및 뷰잉 매체로부터의 거리를 입력으로서 수용하고, 폰트에 대한 최적 크기 및 라인 높이를 출력으로서 제공하거나, 결정된 최적 크기 및 라인 높이를 이용하여 자동으로 출력한다. 장치는 컴퓨터, 휴대가능 컴퓨팅 장치, 또는 프린터에 내장된 마이크로프로세싱 유닛 등이 될 수도 있다. 프린터 또는 장치의 출력은 뷰잉 매체일 수 있다. 또한, 뷰잉 매체는 인쇄된 페이지, 스크린, 무선으로 접속된 뷰잉 매체, 빌보드, 화상 또는 임의의 폰트-렌더링 매체일 수 있다. 일부 실시예들에서, 뷰잉 매체의 치수와 뷰잉 매체로부터의 거리를 입력하는 것은 네트워크 또는 클라이언트-네트워크 환경, 인터넷 접속 등을 통해 가능할 수 있다.
상기 설명한 도 22는 도 2에 도시된 레이아웃 엔진(202)에서 발생하는 오퍼레이션을 예시하고 있다. 이제, 도 24를 참조하면, 실시예는 국제적 번역기와 조합하여 레이아웃 엔진(202)을 이용하는 것에 관한 것이다. 본 단락에서 국제적 번역기는 주어진 언어의 텍스트를 번역하여 다른 언어로 출력을 제공할 수 있는 본 기술 분야에 주지된 소프트웨어-활자 번역기를 포함한다. 예를 들면, 특정 URL 위치에 위치한 텍스트를 다른 언어로 변경하는 실시예에 적절한 인터넷을 통해 가용한 번역기들이 알려져 있다. 도 24를 참조하면, 블록 다이어그램은 레이아웃 엔진(202) 및 어플리케이션(200)을 포함하도록 도시된다. 어플리케이션(200)은 도 1에 도시된 컴퓨터(110) 상에서 운용되는 임의의 어플리케이션이 될 수 있다. 본 실시예에 대해, 적절한 어플리케이션 프로그램은 예를 들면, 브라우저나 마이크로소프트 아웃룩 등과 같은 이메일-활자 어플리케이션과 조합하여 서버 접속을 통해 운용하는 다른 어플리케이션뿐만 아니라 마이크로소프트 워드, 마이크로소프트 퍼블리서, 쿼크엑스프레스, 아도비 인디자인을 포함한다. 하나의 실시예에서, 어플리케이션(200)이 속성 시트(210) 컴포넌트 및 속성 값(220) 컴포넌트의 내용을 공급하는 다른 어플리케이션으로의 링크만을 가지고 있도록 속성 시트(210) 및 속성 값(220)이 액세스된 컴포넌트가 될 수 있지만, 어플리케이션(200)은 속성 시트(210) 및 속성 값(220)을 포함하도록 도시된다. 도 24는 접속(2470)을 통해 외부 국제적 번역기(2460)가 어플리케이션(200)에 결합되는 것을 추가로 도시하고 있다. 외부 국제적 번역기는, 어플리케이션(200)이 인터넷을 통해 또는 영역 네트워크처럼 네트워크화된 번역기에 대한 서버 접속으로 번역 기능에 액세스하는 이들 실시예들에 대한 외부 컴포넌트로서 도시된다. 다르게는 외부 국제적 번역기는 컴퓨터 시스템에서 중앙 버스를 통해 액세스가능한 바와 같이, 어플리케이션(200)에만 외부에 존재할 수 있다. 도 24와 조합하여 도 25를 참조하면, 하나의 실시예에서, 블록 2510에서, 외부 국제적 번역기는 어플리케이션(200)에 의해 생성되거나 수신된 텍스트를 번역한다. 외부 국제적 번역기(2460)으로 인해 발생하는 속성 변경은 블록 2520에 도시된 바와 같이, 어플리케이션(200)에 제공되어 속성 시트(210)나 속성 값(220)의 요소를 변경하거나 레이아웃 엔진(202)에 직접 제공된다. 레이아웃 엔진(202)은 이러한 실시예, 즉 국제적 번역기(2462)를 가질 수는 있지만, 반드시 필요한 것은 아니다. 존재한다면, 외부 국제적 번역기(2460)는 국제적 번역기(2462)로부터 데이터를 송수신하여, 외부 국제적 번역기(2460)와 레이아웃 엔진(202) 간의 원활한 상호작용을 가능하게 하는 양립성 컴포넌트를 제공한다(블록 2520). 하나의 실시예에서, 외부 국제적 번역기(2460)는 번역된 텍스트를 언어 및 기본 텍스트로 어플리케이션(200)에 제공하여, 관련 데이터를 접속(280)을 통해 레이아웃 엔진(202)에 전송한다(블록 2520). 그리고 나서, 레이아웃 엔진(202)이 상기 설명한 바와 같이 데이터에 작용하여 가독성 파라미터를 어플리케이션(200)에 제공한다(블록 2530). 특히, 판독 메트릭스 엔진(240) 및 텍스트 엔진(250)을 이용하는 레이아웃 엔진(202)은 어플리케이션(200)에 의해 수신되거나 외부 국제적 번역기(2460)로부터 직접 수신된 데이터에 대해 동작하여, 번역된 텍스트를 텍스트가 번역되는 언어에 적합한 칼럼, 라인 높이, 폰트 크기 등을 가지는 판독가능한 포맷으로 제공한다.
다른 실시예에서, 도 26에 도시된 바와 같이, 어플리케이션(200)은 외부 국제적 번역기와 상호작용하지 않고, 공급된 언어를 나타내는 언어 식별자와 출력되기를 원하는 하나 이상의 언어와 함께 텍스트 데이터를 레이아웃 엔진(202)에 공급한다(블록 2610). 그리고 나서, 국제적 번역기(2462)는 언어 식별자와 텍스트를 수신하고 구조와 레이아웃 및 입력 필터(230)에 필요한 파라미터를 결정하기 위해 번역된 텍스트를 제공하여 판독 메트릭스 엔진(240) 및 텍스트 엔진(250)으로 동작가능한 데이터 구조를 생성한다(블록 2620). 그러므로, 하나의 실시예에서, 어플리케이션(200)은 하나의 언어에서 레이아웃 엔진에 데이터를 공급하고, 어플리케이션(200)이 원하는 각 언어에 대한 디스플레이에 대해 포맷되고 개별적인 언어에 적절한 텍스트의 다중 언어를 표시할 수 있도록 하는 데이터를 다시 수신할 수 있다(블록 2630). 어플리케이션(200)은 다른 디스플레이 상에서 운용될 수 있고, 각 디스플레이는 다른 크기를 가지고 있으며, 각 디스플레이는 그 디스플레이 및 그 언어에 대해 포맷된 다른 언어로 동일한 텍스트를 수신한다. 그러므로 예를 들어, 어플리케이션(200)이 수개의 나라에서 클라이언트 머신을 지원하는 서버 상에서 운용되는 경우, 서버 그룹내의 각 디스플레이는 적절한 언어로 된 텍스트를 수신하여 그 언어 및 그 디스플레이에 적절하게 크기 조정되고 포맷된다. 이메일 프로그램 등을 운용하는 서버에 대해, 어플리케이션(200)은 마이크로소프트 아웃룩과 같은 각 클라이언트 머신에서 동작할 수 있고, 또는 유닉스 서버와 같은 서버 상에서 운용될 수 있으며, 서버는 예를 들면 익스체인지(exchange) 서버 활자가 될 수 있다. 어플리케이션(200)을 운용하는 서버 또는 클라이언트 머신은 임의의 언어로 된 텍스트를 수신하고, 레이아웃 엔진(202)과 상호작용하여 임의의 수신된 언어를 로컬 언어 또는 국제적 번역기(2462)에서 프로그래밍된 선택 언어로 자동으로 번역하며, 언어 및 디스플레이(들)에 대해 적절하도록 번역된 텍스트를 포맷하는데 필요한 파라미터를 어플리케이션(200)에 출력하도록 구성될 수 있다.
임의의 특허, 특허 출원서, 문헌을 포함한 여기에 인용된 모든 참조문헌은 참조로 그 전부를 여기에 첨부하였다.
본 발명의 원리가 적용되는 가능한 많은 실시예를 감안하면, 도시된 도면을 참조하여 설명된 실시예는 단지 예시적이며 본 발명의 범주를 제한하는 것으로 받아들여서는 안 된다는 것은 자명하다. 예를 들어, 본 기술 분야의 숙련자라면, 소 프트웨어로 도시된 실시예의 요소들은 하드웨어로 구현될 수 있고, 그 반대도 가능하며, 예시된 실시예는 본 발명의 사상에서 벗어나지 않고서도 배열과 그 세부사항이 변형될 수 있다. 그러므로, 본 명세서에 기재된 발명은 이하의 특허청구범위 및 그 등가의 범주내에 드는 많은 그러한 실시예들을 포함한다.
본 발명의 시스템 및 방법에 따르면, 임의의 언어에서 다른 표시 매체 및 다른 가독성 파라미터에 대한 적절한 폰트 특성이 자동적으로 결정된다.

Claims (111)

  1. 텍스트의 스트링에 대한 라인 높이를 결정하는 방법 - 상기 텍스트는 클러스터들로 조직화되고, 각 클러스터는 커서가 삽입될 수 있는 포인트들 간의 인쇄물의 양에 의해 식별되는 상기 텍스트의 스트링의 렌더링 단위이며, 상기 텍스트의 스트링은 폰트 크기로 렌더링되고, 상기 폰트 크기는 em으로 표현되며, 각 em은 활자의 정사각형으로 식별됨 - 으로서,
    상기 텍스트의 스트링에서 em 당 클러스터의 개수를 표현하는 값을 결정하는 단계(1410)와,
    지수를 갖는 함수에 의해 디폴트 라인 높이를 스케일링하는 단계(850, 1820)
    를 포함하는 라인 높이 결정 방법.
  2. 제1항에 있어서,
    상기 디폴트 라인 높이는 상기 텍스트의 스트링에서 사용되는 폰트 크기의 120%인 라인 높이 결정 방법.
  3. 텍스트의 스트링에 대한 라인 높이를 결정하기 위한 컴퓨터 실행가능 명령어를 보유하는 컴퓨터 판독가능 매체(132, 141, 152, 156)로서,
    상기 텍스트는 클러스터들로 조직화되고, 각 클러스터는 커서가 삽입될 수 있는 포인트들 간의 인쇄물의 양에 의해 식별되는 상기 텍스트의 스트링의 렌더링 단위이며, 상기 텍스트의 스트링은 폰트 크기로 렌더링되고, 상기 폰트 크기는 em으로 표현되며, 각 em은 활자의 정사각형으로 식별되고,
    상기 명령어는,
    상기 텍스트의 스트링에서 em 당 클러스터의 개수를 표현하는 값을 결정하는 단계와,
    지수를 갖는 함수에 의해 디폴트 라인 높이를 스케일링하는 단계
    를 수행하는 컴퓨터 판독가능 매체.
  4. 프로세서(120)와,
    상기 프로세서에 결합되는 메모리(131, 132)와,
    상기 프로세서 및 상기 메모리에 결합되고, 폰트 특성(characteristics)을 정의하는 복수의 요소를 갖도록 구성된 데이터 구조(330)와,
    상기 데이터 구조에 결합되고, 상기 폰트 특성을 갖는 클러스터의 평균 폭에 지수를 갖는 함수를 적용함으로써, 상기 폰트 특성을 이용하여 텍스트에 대한 라인 높이를 조정하도록 구성된 모듈(240, 250)
    을 포함하는 컴퓨터 시스템.
  5. 제4항에 있어서,
    상기 데이터 구조는 레이아웃 엔진 내에 존재하고,
    상기 레이아웃 엔진은,
    어플리케이션으로부터 복수의 텍스트 속성을 수신하도록 구성된 구조와 레이아웃 및 입력 필터(230)와,
    상기 복수의 텍스트 속성 중 적어도 하나의 텍스트 속성을 수신하고 폰트의 클러스터의 평균 폭을 결정하도록 구성된 텍스트 엔진(250)과,
    상기 텍스트 엔진으로부터 상기 폰트의 단일 클러스터의 평균 폭을 수신하고 상기 지수를 갖는 함수를 적용하도록 결합된 판독 메트릭스(metrics) 엔진(240)
    을 포함하는 컴퓨터 시스템.
  6. 제4항에 있어서,
    상기 모듈은 뷰잉(viewing) 조건이 변경됨에 따라 상기 폰트 특성을 동적으로 처리하는 컴퓨터 시스템.
  7. 제4항에 있어서,
    상기 지수를 갖는 함수는 상기 클러스터의 평균 폭의 함수의 제곱근에 의해 승산된 디폴트 폰트 크기인 컴퓨터 시스템.
  8. 제4항에 있어서,
    상기 모듈은 어플리케이션 프로그래밍 인터페이스를 통해 인스턴스화되는 컴퓨터 시스템.
  9. 제4항에 있어서,
    상기 모듈은 클라이언트-서버 접속을 통해 액세스 가능한 컴퓨터 시스템.
  10. 제4항에 있어서,
    상기 모듈은, 상기 텍스트의 소정 부분의 그레이 값 대 상기 텍스트의 전체 그레이 값의 비를 결정하고 상기 비를 상기 텍스트에 대한 소정의 폰트의 문자 밀도로 나누도록 구성된 최적의 판독가능 라인 높이 승산자 모듈인 컴퓨터 시스템.
  11. 제10항에 있어서,
    상기 모듈은 상기 나누어진 비에 1을 더하여 폰트 크기의 승산자를 결정하는 컴퓨터 시스템.
  12. 제4항에 있어서,
    상기 모듈은 라인 높이를 결정하고 상기 라인 높이를 마크업 라인 높이 스케일로 승산하는 컴퓨터 시스템.
  13. 제4항에 있어서,
    상기 모듈은, 상기 텍스트의 적어도 3개의 소정의 대표 부분의 면적을 결정하고 상기 면적의 크기를 폰트 크기로 나누어 라인 높이를 결정하는 컴퓨터 시스템.
  14. 제4항에 있어서,
    상기 모듈은 (Rw 2+(1/Cpm 2))1/2로 승산된 폰트 크기의 함수에 따라 라인 높이를 결정하며, 여기서 Rw는 em 당 활자의 탑 잉크로부터 활자의 기저 잉크까지의 상기 활자의 실제 높이이고, Cpm은 em 당 클러스터의 개수를 나타내는 컴퓨터 시스템.
  15. 제14항에 있어서,
    상기 함수는 사용자 입력 및 표준 디폴트 라인 높이 승산자 중 하나에 의해 수정되는 컴퓨터 시스템.
  16. 제4항에 있어서,
    상기 모듈은 상기 텍스트의 라인 길이가 변경되면 라인 높이를 자동 변경하는 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 라인 높이의 상기 자동 변경은, 상기 텍스트의 물리적 길이 및 상기 텍스트의 라인에서의 클러스터의 개수의 함수에 기초하는 컴퓨터 시스템.
  18. 텍스트의 라인 높이를 결정하기 위한 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체로서,
    상기 명령어는,
    상기 텍스트의 파라미터를 저장하는 단계와,
    상기 텍스트의 파라미터를 이용하여 지수를 갖는 함수를 적용하는 단계(1820)
    를 수행하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 지수를 갖는 함수는, 상기 텍스트의 파라미터를 이용하는 지수를 갖는 함수에 의해 승산된 상수인 컴퓨터 판독가능 매체.
  20. 제18항에 있어서,
    상기 텍스트의 파라미터는 단일 문자의 평균 폭인 컴퓨터 판독가능 매체.
  21. 제19항에 있어서,
    상기 상수는 상기 텍스트에 대한 디폴트 폰트 크기의 크기에 관련되는 컴퓨터 판독가능 매체.
  22. 제18항에 있어서,
    상기 라인 높이를 마크업 라인 높이 스케일로 승산하는 단계를 수행하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  23. 제18항에 있어서,
    상기 텍스트의 파라미터는 폰트 크기이고, 상기 지수를 갖는 함수는 (Rw 2+(1/Cpm 2))1/2로 승산된 폰트 크기이며, 여기서 Rw는 em 당 활자의 탑 잉크로부터 활자의 기저 잉크까지의 상기 활자의 실제 높이이고, Cpm은 em 당 문자의 개수를 나타내는 컴퓨터 판독가능 매체.
  24. 제23항에 있어서,
    상기 함수는 사용자 입력 및 표준 디폴트 라인 높이 승산자 중 하나에 의해 수정되는 컴퓨터 판독가능 매체.
  25. 제23항에 있어서,
    상기 함수는 상기 텍스트의 라인 길이가 변경되면 상기 라인 높이를 자동 변경하도록 동작하는 컴퓨터 판독가능 매체.
  26. 제25항에 있어서,
    상기 라인 높이의 상기 자동 변경은, 상기 텍스트의 물리적 길이 및 상기 텍스트의 라인에서의 클러스터 개수의 함수에 기초하는 컴퓨터 판독가능 매체.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
  85. 삭제
  86. 삭제
  87. 삭제
  88. 삭제
  89. 삭제
  90. 삭제
  91. 삭제
  92. 삭제
  93. 삭제
  94. 삭제
  95. 삭제
  96. 삭제
  97. 삭제
  98. 삭제
  99. 삭제
  100. 삭제
  101. 삭제
  102. 삭제
  103. 삭제
  104. 삭제
  105. 삭제
  106. 삭제
  107. 삭제
  108. 삭제
  109. 삭제
  110. 삭제
  111. 삭제
KR1020030016564A 2002-12-18 2003-03-17 국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정시스템과 방법 KR101002524B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/323,059 US7385606B2 (en) 2002-12-18 2002-12-18 International font measurement system and method
US10/322,857 US7271806B2 (en) 2002-12-18 2002-12-18 International automatic line height system and method
US10/323,038 2002-12-18
US10/323,059 2002-12-18
US10/322,857 2002-12-18
US10/323,038 US20040119714A1 (en) 2002-12-18 2002-12-18 International automatic font size system and method

Publications (2)

Publication Number Publication Date
KR20040054467A KR20040054467A (ko) 2004-06-25
KR101002524B1 true KR101002524B1 (ko) 2010-12-17

Family

ID=32397934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030016564A KR101002524B1 (ko) 2002-12-18 2003-03-17 국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정시스템과 방법

Country Status (10)

Country Link
EP (1) EP1431881B1 (ko)
JP (1) JP2004199021A (ko)
KR (1) KR101002524B1 (ko)
CN (1) CN1508722B (ko)
AT (1) ATE438146T1 (ko)
AU (1) AU2003200654B2 (ko)
BR (1) BR0301148A (ko)
CA (1) CA2421511C (ko)
DE (1) DE60328578D1 (ko)
MX (1) MXPA03002285A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017010732A1 (ko) * 2015-07-10 2017-01-19 김성일 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7576749B2 (en) * 2005-09-15 2009-08-18 Microsoft Corporation Positioning screen elements
US20070094591A1 (en) * 2005-10-24 2007-04-26 Etgen Michael P System and method for text legibility enhancement
KR100777444B1 (ko) * 2006-01-02 2007-11-21 삼성전자주식회사 폰트 크기를 변경하여 인쇄하는 방법 및 이에 사용되는호스트와 프린터
FR2911974B1 (fr) * 2007-01-25 2009-04-17 Streamezzo Sa Procede de gestion de polices de caracteres dans un terminal de radiocommunication, pour restituer des contenus multimedia sur un ecran, et terminal correspondant
RU2460151C1 (ru) * 2011-01-12 2012-08-27 Альберт Владимирович Патраль Устройство для индикации с наилучшей идентификацией знаков
CN103186506A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 一种调整字符对间距的方法和系统
KR101302292B1 (ko) * 2012-01-05 2013-09-03 (주)이스트소프트 렌더링엔진 자동변환을 위한 웹브라우저를 기록한 컴퓨터 판독가능한 기록매체 및 렌더링엔진 자동변환방법
CN103699520A (zh) * 2012-09-27 2014-04-02 茵弗维尔株式会社 用于维持电子文档布局的字体处理方法
JP6295541B2 (ja) * 2013-08-09 2018-03-20 オムロン株式会社 情報処理装置、プログラマブル表示器、データ処理方法、およびプログラム
CN104503955B (zh) * 2014-12-03 2018-07-20 中建材国际贸易有限公司 一种生成个性化excel表单据的方法
CN104537004A (zh) * 2014-12-15 2015-04-22 小米科技有限责任公司 网页文字显示方法及装置
JP6682865B2 (ja) * 2016-01-15 2020-04-15 セイコーエプソン株式会社 印刷装置、及び印刷装置の制御方法
CN106383689B (zh) * 2016-09-20 2019-11-29 青岛海信电器股份有限公司 显示字体大小调整方法、装置及终端设备
CN110162232A (zh) * 2018-02-11 2019-08-23 中国移动通信集团终端有限公司 屏幕显示方法、具有显示屏幕的装置、设备及存储介质
CN109657205B (zh) * 2018-10-09 2024-01-12 创新先进技术有限公司 文本行高的调整方法及装置、电子设备
WO2020124454A1 (zh) * 2018-12-19 2020-06-25 深圳市欢太科技有限公司 字体切换方法及相关产品
CN112631491A (zh) * 2020-12-31 2021-04-09 咪咕文化科技有限公司 屏幕文字调整方法、装置、网络设备及存储介质
CN113778582A (zh) * 2021-07-28 2021-12-10 赤子城网络技术(北京)有限公司 本地化多语言适配的设置方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075892A (en) 1995-01-06 2000-06-13 Xerox Corporation Methods for determining font attributes of characters
US6256650B1 (en) 1998-05-18 2001-07-03 Microsoft Corporation Method and system for automatically causing editable text to substantially occupy a text frame
US6282327B1 (en) 1999-07-30 2001-08-28 Microsoft Corporation Maintaining advance widths of existing characters that have been resolution enhanced

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5416898A (en) * 1992-05-12 1995-05-16 Apple Computer, Inc. Apparatus and method for generating textual lines layouts
JPH0749865A (ja) * 1993-08-06 1995-02-21 Omron Corp テキスト表示装置
US5598520A (en) * 1994-09-26 1997-01-28 Microsoft Corporation Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary
JP3364868B2 (ja) * 1995-11-24 2003-01-08 日本電信電話株式会社 階層毎に書体を推奨する方法および装置
US6320587B1 (en) * 1996-08-26 2001-11-20 Fujitsu Limited Font processing apparatus in network environment and method thereof
US6356650B1 (en) * 1997-05-07 2002-03-12 Siemens Ag Method for computer-adaptation of a reference data set on the basis of at least one input data set
JP3604902B2 (ja) * 1998-04-10 2004-12-22 キヤノン株式会社 画像処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075892A (en) 1995-01-06 2000-06-13 Xerox Corporation Methods for determining font attributes of characters
US6256650B1 (en) 1998-05-18 2001-07-03 Microsoft Corporation Method and system for automatically causing editable text to substantially occupy a text frame
US6282327B1 (en) 1999-07-30 2001-08-28 Microsoft Corporation Maintaining advance widths of existing characters that have been resolution enhanced

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017010732A1 (ko) * 2015-07-10 2017-01-19 김성일 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체
US10706211B2 (en) 2015-07-10 2020-07-07 Sung IL Kim Method and storage medium for displaying text on screen of portable terminal

Also Published As

Publication number Publication date
MXPA03002285A (es) 2004-10-29
DE60328578D1 (de) 2009-09-10
CA2421511C (en) 2011-02-08
CN1508722A (zh) 2004-06-30
CN1508722B (zh) 2010-04-28
AU2003200654B2 (en) 2009-04-02
KR20040054467A (ko) 2004-06-25
EP1431881B1 (en) 2009-07-29
EP1431881A2 (en) 2004-06-23
AU2003200654A1 (en) 2004-07-08
EP1431881A3 (en) 2006-02-15
CA2421511A1 (en) 2004-06-18
BR0301148A (pt) 2004-08-17
ATE438146T1 (de) 2009-08-15
JP2004199021A (ja) 2004-07-15

Similar Documents

Publication Publication Date Title
KR101002524B1 (ko) 국제적인 자동 라인 높이, 폰트 크기, 및 폰트 측정시스템과 방법
US20040119714A1 (en) International automatic font size system and method
US7385606B2 (en) International font measurement system and method
US7271806B2 (en) International automatic line height system and method
US11461077B2 (en) Method of displaying data in a table with fixed header
US8515176B1 (en) Identification of text-block frames
US20150067463A1 (en) Method of displaying data in a table while retaining a fixed header
JP2007058868A (ja) 置換コンピュータ字体の供給方法及び装置
US9639528B1 (en) Translation-based visual design
EP0502178A1 (en) A method of formatting documents using flexible design models providing controlled copyfit and typeface selection
JP3111811B2 (ja) 文字間隔調整装置および方法
US9734132B1 (en) Alignment and reflow of displayed character images
US20140362104A1 (en) Layered z-order and hinted color fonts with dynamic palettes
US20170358238A1 (en) Speed reading system and method
US8548280B2 (en) Systems and methods for replacing non-image text
US8891874B1 (en) Legibility analysis of text in an electronic document
Ledermann Minimum dimensions for cartographic symbology–history, rationale and relevance in the digital age
US9984053B2 (en) Replicating the appearance of typographical attributes by adjusting letter spacing of glyphs in digital publications
RU2323470C2 (ru) Система и способ автоматического измерения высоты строки, размера и других параметров международного шрифта
Vildavski et al. PseudoSloan: A perimetric-complexity and area-controlled font for vision and reading research
KR101719336B1 (ko) 메타데이터를 이용한 폰트 변형방법 및 시스템
Lee et al. Exploring the relationship between language and design: a study of Hong Kong newspapers
Benson et al. Typography for mobile phone devices: the design of the qualcomm sans font family
US8340434B2 (en) Image processing apparatus, image processing system and computer readable medium
Karaman A study on the issues of reading from screen

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee