KR20140073480A - 라인을 따른 텍스트 이미지 렌더링 - Google Patents

라인을 따른 텍스트 이미지 렌더링 Download PDF

Info

Publication number
KR20140073480A
KR20140073480A KR1020147001988A KR20147001988A KR20140073480A KR 20140073480 A KR20140073480 A KR 20140073480A KR 1020147001988 A KR1020147001988 A KR 1020147001988A KR 20147001988 A KR20147001988 A KR 20147001988A KR 20140073480 A KR20140073480 A KR 20140073480A
Authority
KR
South Korea
Prior art keywords
text
encoded data
character
image
string
Prior art date
Application number
KR1020147001988A
Other languages
English (en)
Other versions
KR102001191B1 (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 US13/174,378 external-priority patent/US20130002679A1/en
Priority claimed from US13/174,403 external-priority patent/US8760451B2/en
Priority claimed from US13/174,283 external-priority patent/US8400453B2/en
Application filed by 구글 잉크. filed Critical 구글 잉크.
Publication of KR20140073480A publication Critical patent/KR20140073480A/ko
Application granted granted Critical
Publication of KR102001191B1 publication Critical patent/KR102001191B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/3673Labelling using text of road map data items, e.g. road names, POI names
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Abstract

맵 이미지 렌더링 시스템과 같은 그래픽 또는 이미지 렌더링 시스템은, 이미지 오브젝트에 예컨대 라벨을 제공하기 위해 이미지 상에 디스플레이될 텍스트 스트링을 정의하는 텍스처, 및 도로, 지리적 경계 등과 같은 다양한 이미지 오브젝트를 정의하는 벡터 데이터의 형태로 이미지 데이터베이스로부터 이미지 데이터를 수신한다. 이미징 렌더링 시스템은 이미지를 렌더링하여 텍스트 스트링의 개개의 캐릭터는 멀티-세그먼트화된 라인 또는 곡선을 따라 이미지 상에 놓이게 된다. 이러한 렌더링 시스템은, 예컨대, 텍스트 스트링 정보를 저장하는 텍스처를 생성할 때 텍스트가 따라 놓일 라인의 곡률의 세부 사항을 알고 있음이 없이 텍스트가 굽은 또는 각을 이루는 도로 또는 다른 이미지 특징의 중심선을 따르도록 텍스트 스트링이 맵 이미지 상에 놓일 수 있게 한다. 이러한 특징은 그것이, 예컨대, 도로 명칭이 도로의 곡률을 따라 도로 내부 어디에라도 놓일 수 있게 하여, 맵 이미지 내 만족스러운 시각적 효과를 제공하므로 맵 이미지 내 강화된 시각적 속성을 제공한다.

Description

라인을 따른 텍스트 이미지 렌더링{RENDERING A TEXT IMAGE FOLLOWING A LINE}
본 발명은 전자 맵 디스플레이 시스템과 같은 이미지 렌더링 시스템에 관한 것으로, 더 구체적으로는 멀티-세그먼트화된 라인과 같은 라인을 따라 텍스트 이미지를 렌더링하는 이미지 렌더링 엔진에 관한 것이다.
디지털 맵은 모바일 폰, 차 네비게이션 시스템, 휴대용 GPS 유닛, 컴퓨터 및 많은 웹사이트를 포함하는 매우 다양한 디바이스에서 발견되고 그에 의해 디스플레이될 수 있다. 디지털 맵은 최종 사용자의 관점에서는 보고 사용하기가 용이하기는 하지만, 디지털 맵을 생성하는 것은 어려운 태스크이고 시간을 소모하는 프로세스일 수 있다. 구체적으로, 디지털 맵마다 맵의 일부분으로서 디스플레이될 수백만의 거리 및 교차로 및 다른 특징에 대응하는 원시 데이터 세트를 맵 데이터베이스에 저장하는 것으로 시작한다. 맵 데이터베이스에 저장되고 디지털 맵 이미지를 발생시키는데 사용되는 원시 맵 데이터는 전형적으로는 여러 다른 양 및 유형의 정보를 각각 제공하는 다양한 소스로부터 유도된다. 그래서 이러한 맵 데이터는 맵 디스플레이 또는 맵 렌더링 애플리케이션 및 하드웨어에 의해 액세스되기 전에 컴파일링되어 맵 데이터베이스에 저장되어야 한다.
물론, 맵 데이터베이스에 저장된 맵 데이터에 기반하여 (디지털 맵 이미지라고 지칭되는) 맵 이미지를 디지털식으로 렌더링하는 여러 다른 방식이 존재한다. 맵 이미지를 렌더링하는 하나의 방법은 수많은 픽셀 데이터 포인트로 구성된 픽셀로 나누어진 이미지 또는 래스터의 세트로 맵 데이터베이스 내 맵 이미지로 저장하는 것으로서, 각각의 픽셀 데이터 포인트는 이미지에서의 특정 픽셀이 전자적 디스플레이 디바이스 상에 어떻게 디스플레이되어야 하는지 정의하는 속성을 포함한다. 이러한 유형의 맵 데이터는 생성 및 저장이 비교적 용이하지만, 이러한 데이터를 사용하는 맵 렌더링 기술은 전형적으로는 포괄적 디지털 맵 이미지를 위한 다량의 저장 공간을 요구하고 아주 많은 유용한 방식으로 디스플레이 디바이스 상에 디스플레이되는 바와 같이 디지털 맵 이미지를 조작하는 것이 어렵다.
또 다른 더 융통성 있는 이미지 렌더링 방법론은 전통적으로는 벡터 이미지 데이터라고 불린다. 전형적으로 벡터 이미지 데이터는 게이밍 시스템, 특히, 3-차원 게이밍 시스템과 연관된 것들과 같은 고해상도 및 고속-이동 이미징 시스템에서 사용된다. 일반적으로 말하면, 벡터 이미지 데이터(또는 벡터 데이터)는 이미지 디스플레이 디바이스를 통해 이미지의 일부분으로서 디스플레이될 (프리미티브라고도 일컬어지는) 특정 이미지 오브젝트 또는 엘리먼트를 정의하는 데이터를 포함한다. 맵 이미지의 맥락에 있어서, 그러한 이미지 엘리먼트 또는 프리미티브는, 예컨대, 개개의 도로 또는 도로 세그먼트, 텍스트 라벨, 에어리어, 텍스트 박스, 빌딩, 관심 지점 마커, 지형 특징, 자전거 길, 맵 또는 거리 라벨 등일 수 있다. 일반적으로 각각의 이미지 엘리먼트는 한 세트의 하나 이상의 (여러 다른 사이즈, 형상, 컬러, 채우기 패턴 등의) 삼각형으로서 그려지거나 이루어지고, 각각의 삼각형은 라인에 의해 상호연결된 3개의 꼭짓점을 포함한다. 그리하여, 어느 특정 이미지 엘리먼트에 대해, 이미지 데이터베이스는 한 세트의 꼭짓점 데이터 포인트를 저장하고, 각각의 꼭짓점 데이터 포인트는 이미지 엘리먼트를 이루는 삼각형 중 하나의 특정 꼭짓점을 정의한다. 일반적으로 말하면, 각각의 꼭짓점 데이터 포인트는 (예컨대, X, Y 또는 X, Y, Z 좌표 시스템에서) 꼭짓점의 2-차원 또는 3-차원 위치 및 꼭짓점으로부터 나오는 라인에 대한 라인 폭 속성, 채우기 속성, 컬러 속성 등과 같이 꼭짓점의 속성을 정의하는 다양한 꼭짓점 속성에 관련 있는 데이터를 포함한다.
이미지 렌더링 프로세스 동안, 렌더링될 이미지의 다양한 이미지 엘리먼트에 대해 정의된 꼭짓점은 디스플레이 스크린 상에 2-차원 이미지를 산출하기 위해 그래픽 카드 또는 래스터라이저와 같은 그래픽 프로세싱 유닛(GPU)과 함께 동작하는 하나 이상의 이미지 셰이더(image shader)에 제공되고 거기서 프로세싱된다. 일반적으로 말하면, 이미지 셰이더는 높은 정도의 융통성으로 그래픽 하드웨어 상의 렌더링 효과를 계산하는데 주로 사용되는 한 세트의 소프트웨어 명령어이다. 이미지 셰이더는 업계에 주지되어 있고 다양한 유형의 이미지 셰이더는 특수 셰이딩 기능을 정의하기 위해 예컨대 OpenGL 및 Direct3D에 의해 제공된 다양한 애플리케이션 프로그래밍 인터페이스(API)에서 이용가능하다. 기본적으로, 이미지 셰이더는 꼭짓점 또는 픽셀 중 어느 것의 특성을 결정 또는 기술하는 하이 레벨 프로그래밍 언어의 단순 프로그램이다. 예컨대, 꼭짓점 셰이더는 꼭짓점의 특성(예컨대, 위치, 텍스처 좌표, 컬러 등)을 정의하는 한편, 픽셀 또는 단편 셰이더는 픽셀의 특성(컬러, z-깊이 및 알파 값)을 정의한다. 꼭짓점 셰이더는, 꼭짓점 셰이더 내로 입력된 각각의 꼭짓점에 대해 꼭짓점 셰이더가 하나의 (업데이트된) 꼭짓점 출력을 산출하도록, 이미지 엘리먼트 또는 프리미티브에서의 각각의 꼭짓점에 대해 호출된다. 꼭짓점 셰이더에 의해 출력된 각각의 꼭짓점은 그 후 결국에는 디스플레이 스크린으로 보내질 메모리 블록 상으로의 일련의 픽셀로서 렌더링된다. 또 다른 예로서, 단편 셰이더는 이미지를 픽셀로 나누기 위해, 즉, 생성되고 있는 이미지의 픽셀 컬러 값을 결정하기 위해 꼭짓점 셰이더에 의해 출력된 꼭짓점을 사용한다. 단편 셰이더는 이미지 오브젝트의 여러 다른 꼭짓점의 꼭짓점 속성 값 사이를 보간함으로써 꼭짓점 셰이더에 의해 산출된 꼭짓점의 꼭짓점 속성 값에 기반하여 픽셀을 채우거나 렌더링할 수 있다. 다른 경우에 있어서, 단편 셰이더는 이미지 오브젝트의 꼭짓점에 의해 정의된 특정 에어리어를 픽셀로 나누거나 채우기 위해 픽셀 컬러 맵 형태의 미리 정의된 텍스처를 사용할 수 있다. 이러한 경우에 있어서, 텍스처는 렌더링될 다양한 이미지에 대한 픽셀 값을 정의하고, 일반적으로는 스크린 상의 이미지 또는 텍스트를 렌더링하는데 사용된다.
이미지 셰이더 기술의 더 구체적 예로서, Direct3D 및 OpenGL 그래픽 라이브러리는 꼭짓점 셰이더, 기하구조 셰이더, 및 픽셀 또는 단편 셰이더를 포함하는 3개의 기본 유형의 셰이더를 사용한다. 꼭짓점 셰이더는 그래픽 프로세서에 주어진 각각의 꼭짓점에 대해 한 번 실행된다. 위에서 언급된 바와 같이, 꼭짓점 셰이더의 목적은 (그래픽 프로세서의 z-버퍼에 대한 깊이 값뿐만 아니라) 가상 공간에서의 꼭짓점의 위치를 그것이 디스플레이 스크린 상에 나타나는 2-차원 좌표로 변환하는 것이다. 꼭짓점 셰이더는 꼭짓점의 꼭짓점 속성을 설정함으로써 위치, 컬러 및 텍스처 좌표와 같은 속성을 조작할 수 있지만, 새로운 꼭짓점을 생성할 수는 없다. 꼭짓점 셰이더의 출력은 프로세싱 파이프라인에서의 다음 스테이지에 제공되는데, 존재한다면 기하구조 셰이더이거나 또는 래스터라이저 중 하나이다. 기하구조 셰이더는 꼭짓점의 메시로부터 꼭짓점을 부가 및 제거할 수 있고 절차적으로 이미지 기하구조를 발생시키거나 또는 중앙 처리 장치(CPU) 상에서 프로세싱하기에는 너무 많은 비용이 드는 것인 기존 이미지에 볼륨 상세를 부가하는데 사용될 수 있다. 기하구조 셰이더가 사용되고 있으면, 그 후 출력은 래스터라이저에 보내진다. 단편 셰이더라고도 알려져 있는 픽셀 셰이더는 이미지에서의 개개의 픽셀의 컬러 및 라이트 속성을 계산한다. 이 스테이지로의 입력은 래스터라이저로부터 오고, 단편 셰이더는 그래픽 파이프라인을 통해 보내지는 다각형의 픽셀 값을 채우도록 동작하고 특정 이미지 오브젝트 내 픽셀 값을 정의하도록 텍스처를 사용할 수 있다. 전형적으로 단편 셰이더는 장면 밝기 및 컬러 톤과 같은 관련 효과에 사용된다. 단편 셰이더는 대응하는 공간에 있는 모든 이미지 엘리먼트 또는 오브젝트마다, 그 이미지 오브젝트가 가려지더라도, 호출되기 때문에 그것들이 픽셀당 여러 번 수시로 호출되므로 단편 셰이더에 대한 호출과 스크린 상의 픽셀 간 일대일 관계는 없다. 그렇지만, 가리는 오브젝트가 먼저 그려지면, 일반적으로는 가려진 다른 오브젝트 픽셀은 단편 셰이더에서 프로세싱되지 않을 것이다.
벡터 그래픽의 사용은 이미지 데이터가 중앙집중화된 맵 데이터베이스로부터 (인터넷, 무선 통신 네트워크 등과 같은) 통신 네트워크를 통해 디스플레이를 위한 하나 이상의 모바일 또는 원격 디바이스에 보내지는 모바일 맵 시스템에서 특히 유익할 수 있다. 구체적으로, 벡터 데이터는, 수신 디바이스에 보내지고 나면, 픽셀로 나누어진 래스터 이미지 데이터보다 더 용이하게 스케일링 및 조작(예컨대, 회전 등)될 수 있다. 그렇지만, 벡터 데이터의 프로세싱은 전형적으로는 시간을 더 많이 소모하고 데이터를 수신하는 이미지 렌더링 시스템 상에서 프로세서 집약적이다. 또한, 맵에서 디스플레이될 정보 또는 상세의 더 높은 레벨을 제공하는 벡터 이미지 데이터를 사용하는 것은 이러한 정보를 저장하는 맵 데이터베이스로부터 맵 렌더링 시스템으로 보내질 것을 필요로 하는 벡터 데이터 또는 꼭짓점의 더 높은 양을 초래하여, 어떤 경우에서는 더 높은 대역폭 요건 또는 다운로드 시간을 초래할 수 있다.
또한, 래스터화된 맵 이미지 및 벡터 데이터 발생된 이미지 둘 다의 경우에 있어서, 맵의 거리, 도로 및 다른 특징의 라벨을 붙이는데 사용되는 것과 같은 텍스트는 일반적으로 미리 결정된 이미지로서 저장된다. 그러한 이미지는 텍스트의 배치를 변화시키도록 조작하기가 힘들다. 픽셀로 나누어진 맵 이미지에 있어서, 예컨대, 텍스트는 다른 맵 특징에 관해 고정된 위치에 위치하고 그리하여 다른 이미지 오브젝트에 관해 텍스트의 배치 또는 오리엔테이션을 변경하는 것이 불가능하지는 않더라도 어렵다. 벡터 데이터를 사용할 때, 전형적으로 텍스트는 다른 맵 특징에 매이지 않는 고정 이미지 또는 스트링(string)으로서 저장되고 그리하여 맵 내 여러 다른 로케이션에 놓일 수 있다. 그렇지만, 텍스트 이미지의 캐릭터가 멀티-세그먼트화된 라인과 같은 라인, 즉, 서로로부터 각을 이루어 뻗어있는 다중 라인 세그먼트를 갖는 라인 또는 곡선 라인을 따르게 하도록 텍스트 내 개개의 캐릭터의 배치를 서로에 관해 변화시키도록 텍스트 이미지를 조작하는 것은 여전히 어렵다.
디스플레이 디바이스 상에서 이미지를 렌더링하기 위한 컴퓨터-구현된 방법은, (이미지 룩업 테이블 내 픽셀로 나누어진 텍스트 캐릭터 세트로서 저장될 수 있는) 텍스트 스트링을 렌더링하도록 따르는 이미지 내 라인을 결정하고, 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를 결정하고, 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하도록 컴퓨터 디바이스를 사용하는 것을 포함하고, 텍스트 박스의 각각은 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 지향된다. 그 방법은 텍스트 스트링의 텍스트 캐릭터를 렌더링할 텍스트 박스 중 하나를 선택하고, 텍스트 스트링으로부터 텍스트 캐릭터 중 하나를 선택하고, 텍스트 캐릭터 중 하나의 중심이, 이미지 상에 텍스트 박스 중 하나에서 렌더링될 때, 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정한다. 이후에 그 방법은 텍스트 캐릭터 중 하나의 중심이 텍스트 박스 중 하나에서 렌더링될 때 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을 것이면 텍스트 박스 중 하나를 사용하여 디스플레이 디바이스 상에 텍스트 캐릭터 중 하나를 렌더링한다. 그렇지 않으면, 그 방법은, 예컨대, 텍스트 캐릭터 중 하나의 중심이 텍스트 박스 중 하나에서 렌더링될 때 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있지 않을 것이면, 디스플레이 디바이스 상에 텍스트 캐릭터 중 하나를 렌더링하는데 사용하기 위해 복수의 텍스트 박스 중 다른 하나를 텍스트 박스 중 하나로서 선택한다.
일 일시예에 있어서, 그 방법은 이미지 룩업 테이블 내 저장된 텍스트 스트링으로부터 텍스트 캐릭터 중 각각의 하나를 차례로 선택하는 단계를 더 포함하고, 텍스트 캐릭터 중 각각의 선택된 하나에 대해, 텍스트 캐릭터 중 선택된 하나의 중심이, 텍스트 박스 중 하나에서 렌더링될 때, 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정하는 단계, 텍스트 캐릭터 중 선택된 하나의 중심이 텍스트 박스 중 하나에서 렌더링될 때 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을 것이면 텍스트 박스 중 하나를 사용하여 디스플레이 디바이스 상에 텍스트 캐릭터 중 선택된 하나를 렌더링하는 단계, 및 그렇지 않으면 디스플레이 디바이스 상에 텍스트 캐릭터 중 선택된 하나를 렌더링하는데 사용하기 위해 복수의 텍스트 박스 중 다른 하나를 텍스트 박스 중 하나로서 선택하는 단계를 수행한다. 또한, 텍스트 캐릭터 중 하나의 중심이, 텍스트 박스 중 하나에서 렌더링될 때, 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정할 때, 그 방법은 텍스트 캐릭터 중 하나에 대한 한 세트의 인코딩 데이터를 읽을 수 있고, 인코딩 데이터는 텍스트 캐릭터 중 하나의 중심을 적어도 하나의 방향으로 지정하고/지정하거나 텍스트 캐릭터 중 하나의 폭을 지정한다.
텍스트 박스를 형성할 때, 그 방법은 텍스트 박스가 라인 세그먼트 중 연관된 하나의 길이를 따라 지향되고 연관된 라인 세그먼트의 길이의 방향으로 연관된 라인 세그먼트의 레인지보다 더 큰 길이를 갖게 되도록 텍스트 박스의 각각을 형성할 수 있다. 하나의 경우에 있어서, 그 방법은 각각의 텍스트 박스의 시작이, 라인 세그먼트의 시작 전, 연관된 라인 세그먼트의 길이의 방향으로 미리 결정된 거리를 뻗어있도록 그리고 텍스트 박스의 끝이, 라인 세그먼트의 끝을 지나, 라인 세그먼트의 방향으로 미리 결정된 거리를 뻗어있도록 텍스트 박스의 각각을 형성할 수 있다. 미리 결정된 거리는 예컨대 텍스트 박스에서 형성될 때 이미지 룩업 테이블에 저장된 텍스트 스트링의 텍스트 캐릭터 중 하나의 폭의 반일 수 있다. 또한 그 방법은 텍스트 박스의 높이가 연관된 라인 세그먼트의 방향에 직교하여 미리 결정된 거리를 뻗어있도록 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성할 수 있다. 이러한 경우에 있어서, 텍스트 박스의 높이는 텍스트 박스에서 형성될 때 이미지 룩업 테이블에 저장된 텍스트 스트링의 텍스트 캐릭터 중 하나의 높이일 수 있다.
소망된다면, 그 방법은, 텍스트 캐릭터 중 하나의 중심이, 텍스트 박스 중 하나에서 렌더링될 때, 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정하도록 그리고 텍스트 캐릭터 중 하나가 텍스트 박스 중 하나에서 렌더링될 때 텍스트 박스 중 하나와 연관된 라인 세그먼트의 레인지 내에 있을 것이면 텍스트 박스 중 하나를 사용하여 디스플레이 디바이스 상에 텍스트 캐릭터 중 하나를 렌더링하도록 단편 셰이더(fragment shader)를 사용할 수 있다. 또한, 그 방법은 복수의 라인 세그먼트에 대한 텍스트 박스를 형성하도록 꼭짓점 셰이더(vertex shader)를 사용할 수 있다.
또 다른 실시예에 의하면, 이미지 렌더링 엔진은 통신 네트워크 인터페이스, 프로세서, 프로세서에 결합된 메모리, 프로세서에 결합된 디스플레이 디바이스, 및 메모리에 저장되어 프로세서 상에서 실행하는 소정 수의 루틴을 포함한다. 제1 루틴은 하나 이상의 텍스트 스트링 룩업 테이블 및 하나 이상의 이미지 오브젝트를 정의하는 데이터를 포함하는 한 세트의 벡터 데이터를, 통신 네트워크 인터페이스를 통해, 수신하되, 텍스트 스트링 룩업 테이블 중 하나는 픽셀로 나누어진 텍스트 캐릭터 세트로서 적어도 하나의 텍스트 스트링의 텍스트 캐릭터를 저장하고 텍스트 스트링과 연관된 복수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 저장한다. 제2 루틴은 텍스트 스트링이 렌더링되려고 따르는 라인과 연관된 복수의 라인 세그먼트, 및 각각의 라인 세그먼트와 연관된 레인지를 결정한다. 제3 루틴은 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 결정하고 텍스트 박스의 각각은 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 지향된다. 제4 루틴은 텍스트 스트링의 텍스트 캐릭터를 렌더링할 텍스트 박스 중 하나를 선택하고, 텍스트 스트링의 텍스트 캐릭터 중 다음 하나를 선택하고, 텍스트 캐릭터 중 선택된 하나의 중심이, 이미지 상에 텍스트 박스 중 선택된 하나에서 렌더링될 때, 텍스트 박스 중 선택된 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정하고, 그리고 텍스트 캐릭터 중 선택된 하나의 중심이 텍스트 박스 중 선택된 하나에서 렌더링될 때 텍스트 박스 중 선택된 하나와 연관된 라인 세그먼트의 레인지 내에 있을 것이면 텍스트 박스 중 하나를 사용하여 디스플레이 디바이스 상에 텍스트 캐릭터 중 하나의 픽셀을 렌더링한다. 그렇지 않으면, 제4 루틴은 디스플레이 디바이스 상에 텍스트 캐릭터 중 선택된 하나를 렌더링하는데 사용하기 위해 복수의 텍스트 박스 중 다른 하나를 텍스트 박스 중 선택된 하나로서 선택한다.
또 다른 실시예에 의하면, 디스플레이 디바이스 상에서 렌더링되고 있는 이미지 내 라인을 따라 텍스트를 렌더링하는 방법은 텍스트 스트링 룩업 테이블을 컴퓨터 메모리에 저장하는 단계를 포함하고, 텍스트 스트링 룩업 테이블은 텍스트 스트링과 연관된 다수의 텍스트 캐릭터 및 텍스트 스트링과 연관된 다수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 포함한다. 또한 그 방법은 텍스트 스트링이 렌더링되려고 따르는 이미지에서의 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를 결정한다. 그 후 그 방법은 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하고, 텍스트 박스의 각각은 이미지에서의 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 지향된다. 텍스트 스트링에서의 각각의 텍스트 캐릭터에 대해, 그 방법은 텍스트 스트링의 텍스트 캐릭터를 렌더링할 텍스트 박스 중 하나를 선택하고, 텍스트 스트링 룩업 테이블로부터 인코딩 데이터를 읽고 그리고 텍스트 캐릭터의 중심 위치가, 텍스트 박스 중 선택된 하나에서 렌더링될 때, 텍스트 박스 중 선택된 하나와 연관된 라인 세그먼트의 레인지 내에 있을지 결정한다. 그 후 그 방법은 텍스트 캐릭터의 중심 위치가 텍스트 박스 중 선택된 하나에서 렌더링될 때 텍스트 박스 중 선택된 하나와 연관된 라인 세그먼트의 레인지 내에 있을 것이면 텍스트 박스 중 선택된 하나를 사용하여 디스플레이 디바이스 상의 이미지에서 텍스트 캐릭터를 렌더링한다. 그렇지 않으면, 즉, 텍스트 캐릭터의 중심 위치가, 텍스트 박스 중 선택된 하나에서 렌더링될 때, 텍스트 박스 중 선택된 하나와 연관된 라인 세그먼트의 레인지 내에 있지 않을 것이면, 그 방법은 복수의 텍스트 박스 중 다른 하나를 텍스트 박스 중 선택된 하나로서 선택한다.
또 다른 실시예에 있어서, 맵 이미지 렌더링 시스템은 맵 데이터베이스 및 맵 이미지 렌더링 시스템을 포함한다. 맵 데이터베이스는 맵-관련 벡터 이미지 데이터를 저장하고, 벡터 이미지 데이터는 하나 이상의 이미지 오브젝트 및 하나 이상의 텍스트 스트링 룩업 테이블을 정의하는 데이터를 포함하고, 텍스트 스트링 룩업 테이블 중 하나는 픽셀로 나누어진 텍스트 캐릭터 세트로서 렌더링될 적어도 하나의 텍스트 스트링과 연관된 텍스트 캐릭터를 저장하고 텍스트 스트링과 연관된 복수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 저장한다. 맵 이미지 렌더링 디바이스는 맵-관련 벡터 이미지 데이터를 수신하도록 맵 데이터베이스에 통신 결합되고 맵-관련 벡터 이미지 데이터를 사용하여 맵 이미지를 렌더링한다. 맵 이미지 렌더링 디바이스는 통신 네트워크 인터페이스, 프로세서, 프로세서에 결합된 메모리, 프로세서에 결합된 디스플레이 디바이스, 및 메모리에 저장되어 프로세서 상에서 실행하는 소정 수의 루틴을 포함한다. 구체적으로, 통신 루틴은, 통신 네트워크 인터페이스를 통해, 디스플레이 디바이스 상에서 렌더링될 이미지에 대한 벡터 이미지 데이터를 수신한다. 부가적으로, 하나 이상의 이미지 셰이더 루틴은 텍스트 스트링이 렌더링되려고 따르는 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를 결정하고, 그리고 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성한다. 텍스트 박스의 각각은 이미지에서의 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 지향되고 각각의 텍스트 박스는 연관된 라인 세그먼트의 레인지에 의해 정의된 한 세트의 레인지 값을 갖는다. 텍스트 스트링에서의 각각의 텍스트 캐릭터에 대해, 하나 이상의 이미지 셰이더 루틴은 텍스트 스트링 룩업 테이블로부터 인코딩 데이터를 읽고, 텍스트 캐릭터가 이미지 상에서 렌더링될 때 텍스트 캐릭터의 중심 위치가 들어갈 레인지 값을 갖는 텍스트 박스를 결정하고, 텍스트 박스 중 결정된 하나를 사용하여 디스플레이 디바이스 상의 이미지의 일부분으로서 텍스트 캐릭터를 렌더링한다.
도 1은 하나 이상의 맵 이미지 렌더링 디바이스와 서버에 저장된 맵 데이터베이스 사이의 통신을 구현하는 맵 이미징 시스템의 하이 레벨 블록 선도;
도 2는 맵 벡터 데이터를 사용하여 맵 이미지를 렌더링하는데 사용되는 이미지 렌더링 엔진의 하이 레벨 블록 선도;
도 3은 텍스트 스트링이 이미지 내 멀티-세그먼트화된 라인을 따라 렌더링될 수 있게 하는 인코딩 스트라이프 및 텍스트 스트링을 갖는 인코딩된 텍스처의 묘사도;
도 3a는 인코딩 스트라이프를 더 상세히 예시하는 도 3의 인코딩된 텍스처의 일부의 묘사도;
도 4는 맵 이미지 내 도로의 중심을 따른 멀티-세그먼트화된 라인의 묘사도;
도 5는 도 4의 멀티-세그먼트화된 라인을 따라 도 3의 텍스처로부터 획득된 텍스트 캐릭터를 렌더링하도록 생성되는 제1 라인 세그먼트와 연관된 제1 텍스트 박스의 그래픽 묘사도;
도 6은 도 4의 멀티-세그먼트화된 라인을 따라 도 3의 텍스처로부터 획득된 텍스트 캐릭터를 렌더링하도록 생성되는 제2 라인 세그먼트와 연관된 제2 텍스트 박스의 그래픽 묘사도;
도 7a 및 도 7b는 도 3의 인코딩된 텍스처 및 도 5 및 6의 텍스트 박스를 사용하여 맵 이미지 내 멀티-세그먼트화된 라인을 따라 한 세트의 텍스트 캐릭터를 렌더링하는 일례의 방법, 루틴 또는 프로세스 흐름 선도의 예시도;
도 8은 제2 텍스처가 소정 수의 텍스트 스트링의 각각에 대해 내부에 배치된 제2 세트의 인코딩 라인을 갖고 제2 인코딩 라인의 각각은 제2 텍스처에 저장되는 글리프(glyph)를 가리키는 것인 예시도;
도 9는 오버랩하는 텍스트 캐릭터를 갖는 텍스트 스트링의 예시도;
도 10은 오버랩하는 캐릭터가 이미지 상의 라인을 따라 렌더링될 수 있게 하기 위해 도 8의 인코딩 기술을 사용하여 한 세트의 텍스트 스트링의 각각에 대해 다중 인코딩 스트라이프를 사용하는 제3 텍스처의 예시도;
도 11은 오버랩하는 캐릭터가 이미지 상의 라인을 따라 렌더링될 수 있게 하기 위해 도 3의 인코딩 기술을 사용하여 텍스트 스트링에 대해 다중 인코딩 스트라이프를 사용하는 제4 텍스처의 예시도.
맵 이미지 렌더링 시스템과 같은 그래픽 또는 이미지 렌더링 시스템은, 이미지 오브젝트에 예컨대 라벨을 제공하기 위해 이미지 상에 디스플레이될 텍스트 스트링을 정의하는 텍스처, 및 도로, 경계 등과 같은 다양한 이미지 오브젝트를 정의하는 벡터 데이터의 형태로 이미지 데이터를 발생시키는 애플리케이션으로부터 또는 이미지 데이터베이스로부터 이미지 데이터를 수신한다. 이미징 렌더링 시스템은 이미지를 렌더링하여 텍스트 스트링의 개개의 캐릭터는 멀티-세그먼트화된 라인 예컨대 곡선을 따라 이미지 상에 놓이게 된다. 이러한 렌더링 시스템은, 예컨대, 텍스트가 굽은 또는 각을 이루는 도로 또는 다른 이미지 특징의 중심선을 따르도록 텍스트 스트링이 맵 이미지 상에 놓일 수 있게 한다. 텍스트 스트링 정보를 저장하는 텍스처를 생성할 때 텍스트가 따라 놓일 라인의 곡률의 세부 사항을 알고 있음이 없이 텍스트가 라인을 따르도록 렌더링되는 것을 이러한 기술이 가능하게 하기 때문에 이러한 렌더링 기술은 이미지 내 텍스트를 렌더링함에 있어서 대단한 융통성을 제공한다. 이러한 특징은 그것이, 예컨대, 도로 명칭이 도로의 곡률을 따라 도로 내부 어디에라도 놓일 수 있게 하여, 렌더링되고 있는 맵 이미지 내 만족스러운 시각적 효과를 제공하므로 맵 이미지 내 강화된 시각적 속성을 제공한다.
도 1을 이제 참조하면, 맵-관련 이미징 시스템(10)은 예컨대 중심 부지에 또는 다양한 여러 다른 이격된 부지에 위치하는 다중 서버 또는 서버(14)에 저장되는 맵 데이터베이스(12)를 포함하고, 또한 맵 렌더링 디바이스 또는 맵 렌더링 엔진을 각각 저장 및 구현하는 다중 맵 클라이언트 디바이스(16, 18, 20, 22)를 포함한다. 맵 클라이언트 디바이스(16-22)는 예컨대 하드와이어드(hardwired) 또는 무선 LAN, MAN 또는 WAN, 인터넷 또는 그 어떠한 조합이라도 포함하는 어느 하드와이어드 또는 무선 통신 네트워크(25)를 통해 서버(14)에 접속될 수 있다. 맵 클라이언트 디바이스(16-22)는, 예컨대, 모바일 폰 디바이스(18), 랩톱, 데스크톱 또는 다른 유형의 컴퓨터와 같은 컴퓨터(16, 20) 또는 자동차 네비게이션 시스템의 컴포넌트와 같은 다른 이미징 시스템의 컴포넌트(22) 등일 수 있다. 또한, 클라이언트 디바이스(16-22)는, 예컨대 무선 LAN 및 WAN, 위성 및 셀룰러 폰 통신 시스템 등을 포함하는 무선 통신 네트워크와 같은 무선 통신 구조, 및/또는 전화 및 케이블 하드웨어와 같은 하드와이어드 기반 통신 구조를 사용하는 것들을 포함하는 어느 공공 이용가능한 또는 사적으로 소유된 통신 네트워크와 같은 어떠한 적합한 통신 시스템이라도 통해서 서버(14)에 통신 접속될 수 있다.
맵 데이터베이스(12)는 래스터 이미지 맵 데이터 및 벡터 이미지 맵 데이터를 포함하는 어떠한 소망 유형 또는 종류의 맵 데이터라도 저장할 수 있다. 그렇지만, 본 명세서에서 설명되는 이미지 렌더링 시스템은 디스플레이될 이미지 내 다수 세트의 이미지 오브젝트, 엘리먼트 또는 프리미티브의 각각에 대해 일련의 꼭짓점들 또는 꼭짓점 데이터 포인트를 정의 또는 포함하는 그리고 맵 상에 디스플레이될 텍스트 스트링을 정의하는데 텍스처를 사용하는 벡터 이미지 데이터와의 사용에 가장 어울린다. 일반적으로 말하면, 벡터 데이터에 의해 정의되는 이미지 오브젝트의 각각은 그와 연관되는 복수의 꼭짓점을 가질 것이고 이들 꼭짓점은 클라이언트 디바이스(16-22) 중 하나 이상을 통해 사용자에게 맵 관련 이미지 오브젝트를 디스플레이하는데 사용될 것이다. 또한, 예컨대 텍스트 이미지 또는 텍스트 캐릭터를 정의하는 다양한 텍스처 맵이 맵 상의 다른 이미지 또는 라벨을 렌더링하는데 사용하기 위해 맵 데이터베이스(12)에 저장될 수 있거나 또는 이들 텍스처 맵은 클라이언트 디바이스(16-22) 내 하나 이상의 애플리케이션에서의 텍스트 캐릭터로부터 발생될 수 있다.
또한 이해될 바와 같이, 클라이언트 디바이스(16-22)의 각각은 일반적으로 연관된 디스플레이 디바이스(34) 상의 그래픽(이미지)을 렌더링 또는 구현하기 위해 알려져 있는 방식으로 프로그래밍 및 상호접속되는 하나 이상의 프로세서(30), 하나 이상의 메모리(32), 디스플레이 디바이스(34), 및 많은 경우에 있어서 래스터라이저 또는 그래픽 카드(36)를 갖는 이미지 렌더링 엔진을 포함한다. 어느 특정 클라이언트 디바이스(16-22)를 위한 디스플레이 디바이스(34)는 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 플라즈마 디스플레이, 캐소드 레이 튜브(CRT) 디스플레이 또는 어느 다른 유형의 알려져 있거나 적합한 전자 디스플레이와 같은 어떠한 유형의 전자 디스플레이 디바이스라도 될 수 있다.
일반적으로 말하면, 도 1의 맵-관련 이미징 시스템(10)은 사용자가, 클라이언트 디바이스(16-22) 중 하나에서, 서버(14)를 통해 맵 데이터베이스(12)로부터 맵 관련 데이터 또는 맵 정보와 통신 및 획득하도록 동작하는 그리고 그 후 수신된 맵 데이터에 기반하여 맵 이미지를 디스플레이 또는 렌더링하는 맵 애플리케이션(도 1에는 도시하지 않음)을 열거나 실행하게 되도록 동작한다. 맵 애플리케이션은 사용자가 맵 데이터베이스(12)에 저장된 맵 데이터의 여러 다른 지리적 부분을 보고, 특정 지리적 로케이션 상에서 줌인 또는 줌아웃하고, 디스플레이되고 있는 맵의 2-차원 또는 3-차원 관람 각도를 회전, 스핀 또는 변경하는 등을 가능하게 할 수 있다. 더 구체적으로, 아래에 설명되는 시스템을 사용하여 디스플레이 디바이스 또는 디스플레이 스크린(34) 상의 맵 이미지를 렌더링할 때, 클라이언트 디바이스(16-22)의 각각은 맵 데이터베이스(12)로부터 벡터 데이터의 형태로 맵 데이터를 다운로드하고 연관된 디스플레이 디바이스(34) 상의 이미지를 렌더링하도록 하나 이상의 이미지 셰이더를 사용하여 그 벡터 데이터를 프로세싱한다.
도 2를 이제 참조하면, 클라이언트 디바이스(16-22) 중 하나에 의해 구현되거나 그와 연관된 이미지 발생 또는 이미지 렌더링 디바이스(40)가 더 상세히 예시되어 있다. 도 2의 이미지 렌더링 시스템(40)은 2개의 프로세서(30a, 30b), 2개의 메모리(32a, 32b), 사용자 인터페이스(34) 및 래스터라이저(36)를 포함한다. 이 경우에 있어서, 프로세서(30b), 메모리(32b) 및 래스터라이저(36)는 별개의 그래픽 카드(수평선 아래에 표시) 상에 배치되어 있기는 하지만, 모든 실시예에 있어서 이럴 필요가 있는 것은 아니다. 예컨대, 다른 실시예에 있어서는, 대신에 단일 프로세서가 사용될 수 있다. 부가적으로, 이미지 렌더링 시스템(40)은 프로세서(30a) 상에서 실행될 수 있는, 메모리(32a) 상에 저장되어 맵 디스플레이 로직을 내부에 갖는 하나 이상의 맵 애플리케이션(48), 통신 및 저장 루틴(43) 및 네트워크 인터페이스(42)를 포함한다. 마찬가지로 예컨대 꼭짓점 셰이더(44) 및 단편 셰이더(46) 형태의 하나 이상의 이미지 셰이더는 메모리(32b) 상에 저장되고 프로세서(30b) 상에서 실행된다. 메모리(32a, 32b)는 휘발성 및 비-휘발성 메모리 중 어느 하나 또는 둘 다를 포함할 수 있고 루틴 및 셰이더는 아래에 설명되는 기능성을 제공하기 위해 프로세서(30a, 30b) 상에서 실행된다. 네트워크 인터페이스(42)는 사용자 인터페이스 또는 디스플레이 디바이스(34) 상에 이미지 디스플레이를 생성하는데 사용하기 위해 벡터 데이터 형태의 이미지 데이터를 획득하도록 하드와이어드 또는 무선 통신 네트워크를 통해 예컨대 도 1의 서버(14)와 통신하도록 동작하는 어떠한 주지의 소프트웨어 및/또는 하드웨어 컴포넌트라도 포함한다. 또한 이미지 렌더링 디바이스(40)는, 예컨대 메모리(32)의 버퍼 또는 휘발성 메모리 부분일 수 있는, 더 상세히 설명될 바와 같이 맵 데이터베이스(12)로부터 수신된 벡터 데이터, 어떠한 수의 꼭짓점 데이터 포인트라도 포함하는 벡터 데이터 및 하나 이상의 이미지 텍스처를 저장하는 데이터 메모리(49)를 포함한다.
동작 동안, 맵 애플리케이션(48)의 맵 로직은 예컨대 사용자 입력, GPS 신호, 미리 저장된 로직 또는 프로그래밍 등을 사용하여 디스플레이 디바이스(34)를 통해 사용자에게 디스플레이하는데 필요한 특정 이미지 데이터를 결정하기 위해 프로세서(30) 상에서 실행한다. 애플리케이션(48)의 디스플레이 또는 맵 로직은, 맵 데이터베이스(12)로부터 바람직하게는 벡터 데이터 또는 압축된 벡터 데이터 형태로 맵 데이터를 획득하기 위해 네트워크 인터페이스(42)를 통해 서버(14)와 통신함으로써, 통신 루틴(43)을 사용하여, 맵 데이터베이스(12)와 상호작용한다. 이러한 벡터 데이터는 네트워크 인터페이스(42)를 통해 반환되고 루틴(43)에 의해 압축해제 및 데이터 메모리(49)에 저장될 수 있다. 특히, 맵 데이터베이스(12)로부터 다운로드된 데이터는 사용될 궁극적 벡터 데이터의 콤팩트, 구조화된 또는 그렇지 않으면 최적화된 버전일 수 있고, 맵 애플리케이션(48)은 프로세서(30a)를 사용하여 그 다운로드된 벡터 데이터를 특정 꼭짓점 데이터 포인트로 변환하도록 동작할 수 있다. 일 실시예에 있어서, 서버(14)로부터 보내진 이미지 데이터는 스크린(34) 상에 디스플레이될 소정 수의 여러 다른 이미지 엘리먼트 또는 이미지 오브젝트와 연관되는 한 세트의 꼭짓점의 각각에 대한 데이터를 일반적으로 포함 또는 정의하는 벡터 데이터 및 아마도 이미지 오브젝트에 관해 이미지 상에 디스플레이될 텍스트 스트링 또는 다른 라벨을 정의 또는 포함하는 하나 이상의 이미지 텍스처를 포함한다. 더 구체적으로, 각각의 이미지 엘리먼트 또는 이미지 오브젝트에 대한 벡터 데이터는 이미지의 특정 엘리먼트 또는 오브젝트를 구성하는 하나 이상의 삼각형과 연관되는 다중 꼭짓점을 포함할 수 있다. 각각의 그러한 삼각형은 (꼭짓점 데이터 포인트에 의해 정의되는) 3개의 꼭짓점을 포함하고 각각의 꼭짓점 데이터 포인트는 그와 연관되는 꼭짓점 데이터를 갖는다. 일 실시예에 있어서, 각각의 꼭짓점 데이터 포인트는 참조 또는 가상 공간에서 꼭짓점의 2-차원 또는 3-차원 위치 또는 로케이션을 정의하는 꼭짓점 로케이션 데이터와 더불어, 한 세트의 꼭짓점 속성 값을 가리키거나 정의하는 하나 이상의 꼭짓점 속성 값 및/또는 속성 참조를 포함한다. 부가적으로 각각의 꼭짓점 데이터 포인트는 꼭짓점 데이터 포인트가 연관되는 이미지 오브젝트의 유형을 식별하는 오브젝트 유형 식별자와 같은 다른 정보를 포함할 수 있다. 마찬가지로, 본질적으로 텍스트 이미지 또는 픽셀 룩업 테이블인 이미지 텍스처는 이미지 상에 렌더링될 텍스트 캐릭터, 텍스트 스트링 또는 라벨을 정의한다. 그러한 이미지 텍스처는 클라이언트 디바이스(16-22)에 다운로드될 수 있지만, 이들 이미지 텍스처는 또한 클라이언트 디바이스(16-22)에서 사용되거나 그에 제공되는 텍스트 캐릭터 스트링을 사용하는 클라이언트 디바이스(16-22)에서 발생될 수도 있다.
일반적으로 말하면, 본 명세서에서 설명되는 맵 이미지 내 라인을 따라 텍스트를 렌더링하기 위한 이미징 시스템은 3개의 파트를 포함하거나 관련시킨다. 첫째로, 이미지에서 렌더링될 텍스트는 (그와 연관되는 경로 또는 특정 오리엔테이션 없이) 이미지 텍스처 내에 놓이고 텍스트 스트링 내 각각의 텍스트 캐릭터의 어떤 특성을 정의하는 인코딩 데이터로 인코딩된다. 이 단계는 클라이언트 디바이스 내 맵 애플리케이션에 의해 수행될 수 있고, 그러하다면, 텍스트 스트링 인코딩된 텍스처는 클라이언트 디바이스의 메모리에 저장된다. 이러한 인코딩이 서버(14)에서 수행되면, 이 텍스처(이미지 또는 텍스트 스트링 룩업 테이블이라고도 불림)는 맵 데이터베이스(12)에 저장될 수 있고 클라이언트 디바이스에서의 저장 및 사용을 위한 클라이언트 디바이스(16-22)에 보내질 수 있다. 둘째로, 렌더링될 텍스트가 이미지 상에서 따르려는 한 세트의 라인 세그먼트는 바람직하게는 적절한 꼭짓점 속성을 갖는 삼각형으로 그려지거나 확립된다. 셋째로, 하나 이상의 셰이더는, 텍스트 스트링의 텍스트 캐릭터의 각각이 라인 세그먼트에 의해 형성되는 라인에 관해 올바르게 회전되거나 따르는 오리엔테이션으로 렌더링되도록 개개의 캐릭터 회전이 수행되면서, 라인 세그먼트를 올바르게 따르도록 텍스처에 저장된 텍스트 스트링의 캐릭터 또는 텍스트를 어디에 그릴지 컴퓨팅한다.
위에서 언급된 바와 같이, 렌더링 기술은 회전되지 않은 텍스트를 텍스처 또는 픽셀 맵 내로 렌더링한다. 물론, 이 프로세스는 텍스트를 이미지 텍스처 또는 다른 유형의 룩업 테이블 내로 렌더링하는 어떠한 소망의 텍스트 렌더링 라이브러리라도 사용하여 수행될 수 있다. 하나보다 많은 텍스트 스트링이 텍스처 내에 놓이려 하면, 각각의 텍스트 스트링의 로케이션은 기록되고 텍스처의 일부분으로 저장 또는 제공된다. 또한, 각각의 텍스트 스트링 내 텍스트의 높이는 텍스처 내로 기록 및 인코딩될 수 있거나 텍스처에 대한 속성 데이터로 제공될 수 있다.
텍스처 내 텍스트 스트링의 회전되지 않은 텍스트를 렌더링하는 것에 부가하여, 코딩된 픽셀 스트라이프와 같은 인코딩 데이터는 텍스트 캐릭터의 중심에 관해 그 텍스트 캐릭터의 각각의 픽셀 열(column)의 상대적 위치를, 텍스처의 X 방향을 따라, 정의하도록 각각의 텍스트 스트링에 대한 텍스처 내에 제공된다. 또한 인코딩 데이터는 텍스트 스트링 내 텍스트 캐릭터 사이의 끊김 또는 전이를 정의할 수 있다. 인코딩 데이터에 어떠한 소망의 방식으로라도 텍스처를 제공할 수 있지만, 인코딩 데이터는 인코딩되고 있는 텍스트 스트링의 픽셀 로케이션의 상부 바로 위 또는 위 가까이 픽셀의 행(row) 내 텍스처 내에 놓일 수 있다.
도 3은 "Freemont Ave", "Aurora Ave" 및 "First St"라는 거리 명칭의 형태로 3개의 텍스트 스트링이 내부에 위치하는 일례의 텍스처(50)를 예시하고 있다. 이해될 바와 같이, 텍스처(50)는 텍스트 스트링을 형성하는 텍스트 캐릭터를 구성하는 픽셀의 각각에 대해 픽셀 컬러 값을 저장한다. 또한, 인코딩 스트라이프(52) 형태의 인코딩 데이터는 텍스트 스트링의 각각의 상부 하나의 픽셀 행 위와 같이 바로 위에 제공된다. 일반적으로 말하면, 인코딩 스트라이프(52)를 구성하는 픽셀의 행 내 픽셀 값은 각각의 텍스트 캐릭터의 중심 픽셀 열 및 텍스트 캐릭터의 폭 또는 어느 특정 픽셀 열 위치로부터 연관된 텍스트 캐릭터의 중심까지의 거리를 반영하도록 인코딩된다. 인코딩 스트라이프(52)는 불변 컬러의 픽셀의 라인으로 도 3에 예시되어 있지만 실제로는 인코딩 스트라이프(52)는 그 여러 다른 픽셀 위치에 대해 여러 다른 컬러 또는 픽셀 값을 포함함을 이해할 것이다. 또한, 예시의 편의를 위해, 텍스트 스트링의 텍스트 캐릭터의 각각과 연관되는 중심 픽셀 열은 작은 수직선으로 마크됨으로써 도 3의 인코딩 라인(52) 내에 나타나 있다.
인코딩 스트라이프(52) 중 하나의 일부가 도 3a에 더 상세하게 예시되어 있다. 구체적으로, 도 3a는 도 3의 텍스트 스트링 "Freemont Ave"의 텍스트 캐릭터 "F r e e" 위에 배치된 인코딩 스트라이프(52)의 일부를 예시하고 있다. 도 3a에서는 텍스트 캐릭터 F, r, e 및 e가 다양한 픽셀 값 로케이션에 걸쳐 블록 릴리프로 도시되어 있지만, 이것은 단지 이들 텍스트 캐릭터와 연관된 텍스처(50)의 픽셀 행 및 열을 예시하기 위해 수행된다. 이들 픽셀 로케이션에 저장된 픽셀 값은 이들 특정 텍스트 캐릭터의 특정 이미지 특징을 정의할 것임을 이해할 것이다. 도 3a의 인코딩 스트라이프(52)는 인코딩 스트라이프(52)가 연관되는 텍스트 스트링 바로 위 텍스처(50) 내에, 예컨대, 연관된 텍스트 스트링의 픽셀의 상부 행 바로 위 픽셀 행에 위치한다. 이러한 경우에 있어서, 인코딩 스트라이프(52)에서의 픽셀의 각각의 값은, 인코딩 스트라이프(52) 바로 아래 픽셀 열 내 위치하는 특정 텍스트 캐릭터의 중심에 관해 측정되는 바와 같이, 그 픽셀 열의 텍스처(50)의 폭 또는 X 방향을 따른 위치를 반영 또는 지정한다. 일례에 있어서, 텍스트 캐릭터의 중심 열에서의 픽셀 값은 128의 값이 되도록 설정될 수 있는 한편 중심 픽셀로부터 오프셋된 픽셀의 값은 텍스트 캐릭터의 중심 픽셀 열로부터 떨어진 각각의 픽셀 열에 대해 1만큼 (예컨대 좌측으로) 증분되거나 (예컨대 우측으로) 감분될 수 있다. 예컨대, "Freemont Ave" 텍스트 스트링에서 "F" 텍스트 캐릭터 위 픽셀 레인지는 128의 값을 갖는 중심 픽셀을 갖는 12개의 픽셀을 포함하고, 중심 픽셀의 우측으로 5개의 픽셀은 각자 127, 126, 125, 124 및 123의 값을 갖고, 중심 픽셀의 좌측으로 4개의 픽셀은 각자 129, 130, 131 및 132의 값을 갖는다. 인코딩 스트라이프(52)는 이러한 인코딩을 수행하기 위해 각각의 픽셀의 적색 컬러의 값을 사용할 수 있지만, 대신에 또는 부가하여 텍스트 캐릭터 중심 및 폭을 인코딩하기 위해 픽셀의 다른 컬러 값을 사용할 수 있다. 인코딩 스트라이프(52)를 정의하는 텍스처(50) 내 픽셀 행에서 적색 픽셀 컬러 값이 인코딩되는 예에 있어서, 인코딩 스트라이프(52)에서의 각각의 픽셀은, 0 내지 255의 스케일 상에서, 픽셀의 현재 아래 또는 동일 픽셀 열 내 텍스트 캐릭터의 중심까지의 픽셀 거리보다 128 더 많은 적색 컬러 값을 갖는다. 각각의 텍스트 캐릭터에 대해 인코딩 스트라이프(52) 내 픽셀의 좌측 및 우측에 하나의 가외 픽셀이 포함될 수 있는데, 좌측 상의 가외 픽셀은 예컨대 255의 적색 값을 갖고 우측 상의 픽셀은 예컨대 0의 적색 값을 가져서 현재 텍스트 캐릭터의 끝을 나타낸다. 물론, 인코딩 스트라이프(52)는 인코딩 스트라이프(52) 바로 아래 텍스트 스트링에서의 각각의 텍스트 캐릭터를 유사하게 인코딩하는데 사용될 수 있다. 더더욱, 인코딩 스트라이프(52)가 연관된 텍스트 스트링 위에 위치하는 것으로 예시되어 있지만, 대안으로 인코딩 스트라이프(52)는 동일 텍스처 내에서 텍스트 스트링 아래 위치할 수 있거나, 또는 그것이 연관되는 텍스트 스트링에 상관되는 또는 미러링하는 위치를 갖는 부가적 또는 별개의 텍스처에와 같이 다른 방식으로 제공될 수 있다. 어떠한 이벤트에서든, 인코딩 스트라이프(52)의 열 위치는 연관된 텍스트 캐릭터의 픽셀 열에 위치 상관된다. 그렇지만, 텍스트 스트링에서의 각각의 텍스트 캐릭터의 중심 위치 및 폭은 어떠한 다른 바람직한 또는 유용한 방식으로라도 인코딩 또는 제공될 수 있다.
텍스처에서의 각각의 텍스트 스트링에 대해 인코딩 스트라이프(52)의 형태로 제공될 수 있는 인코딩 데이터를 저장 및 사용하는 결과로서, 본 명세서에서 설명되는 이미지 렌더링 시스템은 개개의 캐릭터가 멀티-세그먼트화된 라인을 따라 올바르게 지향되어 그려지게 되도록 이들 텍스트 스트링에서의 텍스트 캐릭터를 렌더링할 수 있다. 구체적으로, 인코딩 데이터를 사용하여, 이미지 렌더링 시스템은 각각의 텍스트 캐릭터의 어느 특정 위치(즉, 픽셀 열)에서의 텍스처의 X 좌표를 따라 연관된 텍스트 캐릭터의 중심까지의 상대적 거리를 결정할 수 있다. 이러한 정보를 사용하여, 단편 셰이더(46) 중 하나와 같은 이미지 셰이더는, 아래에 설명될 바와 같이, 캐릭터의 중간에서의 끊김 없이, 회전된 텍스트, 즉, 곡선을 따르는 텍스트를 올바르게 그리도록 동작할 수 있다.
본 명세서에서 설명되는 텍스트 렌더링 프로세스의 제2 일반적 단계는 인코딩된 텍스처 내 텍스트 스트링이 따르려는 라인의 라인 세그먼트를 결정한다. 이러한 단계는 맵 이미지가 렌더링되고 있을 때 일어날 수 있고, 물론, 궁극적으로 텍스트 스트링이 렌더링되는 방식은 렌더링될 텍스트가 따르려는 특정 라인에 의존할 것이다. 물론, 따르게 될 라인은 벡터 기반 이미지 오브젝트를 사용하여 생성된 도로의 중심을 아래로 횡단하는 것, 경계를 따르는 라인 등과 같이 어떠한 소망 유형의 라인이라도 될 수 있다. 일반적으로 그러한 라인은 도로 또는 다른 이미지 특징에 라벨을 붙이기 위해 텍스트를 렌더링하도록 결정 및 사용될 수 있다. 물론, 따르게 될 라인은 이미지 특징의 윤곽을 따르는 라인과 같은 어떠한 다른 유형의 라인, 또는 어떠한 다른 소망의 라인이라도 될 수 있다. 사용될 라인은 이미지 오브젝트의 꼭짓점과 같이 다른 이미지 특징으로부터 결정될 수 있거나, 맵 데이터베이스(12)에 미리 저장되고 그로부터 제공될 수 있거나, 사용자에 의해 지정될 수 있거나, 어떠한 다른 소망의 방식으로라도 결정될 수 있다.
텍스트를 렌더링하도록 따를 라인을 식별시에, 라인은 일직선으로 그렇지만 연결된 라인 세그먼트로 끊기되, 일반적으로 각각의 라인 세그먼트는 바로 옆 라인 세그먼트(들)에 대해 소정의 각을 이룬다. 멀티-세그먼트화된 라인(60)의 일례는 멀티-섹션 도로(62)의 중심을 아래로 횡단하는 라인으로 도 4에 점 릴리프로 예시되어 있다. 세그먼트화된 라인(60)은 상호연결된 라인 세그먼트(60A, 60B, 60C, 60D)를 포함한다. 물론, 라인(60) 및/또는 그 연관된 라인 세그먼트는 도로(60)의 세그먼트를 정의하는 꼭짓점에서 제공된 데이터에 기반해서와 같이 어떠한 소망의 방식으로라도 결정될 수 있다.
도 5는 도 4의 라인 세그먼트(60A, 60B)를 더 상세하게 예시한다. 도 5에 있어서, 라인 세그먼트(60A)는 시점(66)에서 시작하여 종점(68)으로 뻗어있는 것으로 예시되는 한편 라인 세그먼트(60B)는 시점(68)으로부터 뻗어 종점(70)으로 뻗어있는 것으로 예시되어 있다. 더욱, 도 5의 라인 세그먼트(60A)는 (어떤 다른 거리 정량자(quantifier)에 따라 또는 픽셀 수와 같이 라인이 사용되려는 이미지에 상대적 공간에서 측정되는 바와 같이) 35의 길이를 갖는다. 도 5의 경우에 있어서, 라인 세그먼트(60A)는 라인 세그먼트(60A)에 평행하게 배치되는 도 5에서의 스케일(72)에 따라 (점(66)에서) 0의 상대적 참조 값에서 시작하여 (점(68)에서) 35의 상대적 참조 값으로 뻗어있는 것으로 나타나 있다. 유사한 방식으로, 라인 세그먼트(60B)는 (상대적 이미지 공간에서) 70의 길이를 갖고 라인 세그먼트(60B)에 평행하게 배치되는 스케일(74)에 의해 예시되는 바와 같이 (점(68)에서) 35의 상대적 참조 값에서 시작하여 (점(68)에서) 105의 상대적 참조 값으로 뻗어있다.
라인(60)의 라인 세그먼트(예컨대, 60A, 60B)의 각각이 식별되고 그 길이가 결정되고 나면, 각각의 라인 세그먼트는 그 후 여기서는 텍스트 박스로 지칭될 직사각형을 형성하는 한 쌍의 삼각형으로 표현될 수 있다. 그러한 직사각형 또는 텍스트 박스(80A)는 라인 세그먼트(60A)에 대해 도 5에 예시되어 있다. 일반적으로 말하면, 직사각형(80A)은 라인 세그먼트(60A)를 따라 텍스트를 렌더링하기 위해 단편 셰이더에 의해 사용되는 텍스트 박스에 대한 일세트의 꼭짓점을 정의하는데 사용될 것이다. 구체적으로, 직사각형(80A)의 꼭짓점은 (라인 세그먼트(60A)의 길이를 따르는 방향으로 측정되는 바와 같이) 라인 세그먼트(60A)의 시작 전 (라인(60)을 따라 렌더링될 텍스트 스트링의 가장 넓은 캐릭터의 폭의 반과 같이) 미리 정의된 또는 특정 거리를 시작하는 이미지에서의 위치로부터 라인 세그먼트(60A)의 종료 후 미리 정의된 또는 특정 거리(예컨대, 텍스트 스트링 내 가장 넓은 캐릭터의 폭의 반)까지 걸쳐 이어지도록 선택된다. 도 5의 예에 있어서, 미리 결정된 거리는 (이미지의 상대적 공간에서) 5로 예시되고 그리하여 직사각형(80A)은 스케일 마커(72)를 따라 -5로부터 40까지 뻗어있다. 라인 세그먼트(60A)에 직교하는 방향에 있어서, 직사각형(80A)은 라인 세그먼트(60A)에 직교하는 방향으로, 렌더링될 가장 키 큰 텍스트 캐릭터의 높이의 반과 같은, 또 다른 거리를 라인 세그먼트(60A)에 직교하는 다른 방향으로 그 또 다른 거리(예컨대, 렌더링될 가장 키 큰 텍스트 캐릭터의 높이의 반)까지 걸쳐 이어진다. 그리하여, 도 5의 스케일(75)에 의해 예시되는 바와 같이, 직사각형(80A)은 (라인을 따라 렌더링될 텍스트 스트링의 높이가 상대적 이미지 공간에서 10이라고 가정할 때) -5로부터 5까지 걸쳐 이어진다.
이제, 여기서는 라인 세그먼트(60A)의 레인지라고 지칭될, 시점(66)으로부터 종점(68)으로까지 라인 세그먼트(60A) 전체의 길이가 컴퓨팅되거나 결정되고, 이러한 레인지는 텍스트 박스(80A)의 꼭짓점의 각각에 대한 꼭짓점 속성의 2개의 컴포넌트로 설정된다(이들 꼭짓점 속성의 값은 텍스트 박스(80A)를 형성하는 삼각형의 꼭짓점의 각각에 대해 동일하다). 그로써 라인 세그먼트의 레인지는 라인 세그먼트가 배치되는 텍스트 박스(80A)의 레인지로 사용되거나 지칭될 것이다. 그리하여, 직사각형(80A)의 레인지는 텍스트가 렌더링되려 따르는 라인 세그먼트(60A)의 레인지일 것이다. 이러한 레인지는 직사각형(80A)의 일단으로부터 타단으로 길이의 선형 보간이 라인 세그먼트(60A)의 시점에서, 라인 세그먼트(60A)의 종점에서, 그리고 그 사이의 모든 점에서 올바른 길이를 초래하게 되도록 직사각형(80A)의 꼭짓점에 대한 길이 값을 계산하기 위해 보간하도록 단편 셰이더에서 사용될 것이다. 물론, 이러한 보간은 라인 세그먼트(60A)의 시작으로까지 라인 세그먼트(60A)의 길이로부터 가장 넓은 캐릭터의 폭의 반(즉, 미리 결정된 거리)을 빼고 그것을 라인 세그먼트(60A) 전 직사각형 꼭짓점에 대해 사용하고, 가장 넓은 캐릭터의 폭의 반(예컨대, 미리 결정된 거리)을 라인 세그먼트(60A)의 종단의 길이에 더하고 그것을 라인 세그먼트(60A) 후 직사각형 꼭짓점에 대해 사용함으로써 수행될 수 있다. 부가적으로, 라인 세그먼트 위 텍스트 박스의 꼭짓점에는 0의 Y 텍스처 값을 지정하는 꼭짓점 속성이 할당될 수 있고, 라인 세그먼트 아래 텍스트 박스의 꼭짓점에는 이미지 내 렌더링되는 바와 같은 텍스트의 높이와 같은 Y 텍스처 값을 지정하는 꼭짓점 속성이 할당될 수 있다. 그리하여 도 5의 직사각형(80A)의 외곽 꼭짓점의 X, Y 좌표는 라인 세그먼트(60A)의 시점(66)을 중심으로 하고 라인 세그먼트(60A)에 평행하게 (X 방향으로) 그리고 직교하여 (Y 방향으로) 뻗는 이미지 공간에서 (-5, 0), (40, 0), (-5, 10) 및 (40, 10)인 것으로 예시되어 있다. 이러한 좌표 공간의 사용은 단지 예시의 용이함을 위해 제공되고, 보간 및 이미지 렌더링을 수행하는 셰이더에서 또는 이미지 자체에서 사용되는 실제 좌표 공간은 아닐 수 있다. 그렇지만, 일치하는 이미지 공간으로의 변환은 이미지의 X, Y 좌표 공간을 매치하도록 좌표 회전 및 병진에 의해 성취될 수 있다.
(텍스트 박스(80A)와 같은) 텍스트 박스에서 렌더링할 텍스트 스트링을 지정하는데 사용되고 있는 동일한 텍스처에 다중 텍스트 스트링이 제공되면, 텍스트 박스 내 올바른 텍스트 이미지를 렌더링할 수 있도록 꼭짓점 속성으로서 텍스처 내에 저장된 바와 같은 당해 텍스트 스트링을 Y 오프셋(즉, 텍스트 박스에서 렌더링될 텍스트 스트링의 Y 오프셋)에 보낼 필요가 있을 수도 있다. 또한 (라인 세그먼트(60A)와 같은) 특정 라인 세그먼트를 따라 텍스처 내 저장된 텍스트 스트링을 렌더링하려는 셰이더는, 어느 특정 시각에 렌더링될 텍스트 캐릭터의 위치를 찾고 이미지 상에 텍스트 스트링을 렌더링할 때 적절한 보간을 수행할 수 있도록, 텍스처 좌표를 적절히 컴퓨팅하기 위해 텍스처 내 텍스트 스트링의 사이즈(예컨대, 높이)를 알고 있을 필요가 있을 수 있다. 그렇지만, 텍스처에서의 텍스트 스트링 또는 캐릭터의 사이즈(예컨대, 높이)는 균일할 수 있고, 그 후 이러한 값은 텍스트 박스의 꼭짓점 속성으로서보다는 균일 변수로서 설정될 수 있다.
이해될 바와 같이, 직사각형 또는 텍스트 박스는 따르게 될 라인(60)의 다른 라인 세그먼트(60B, 60C, 60D)의 각각에 대해 형성될 수 있다. 일례로서, 텍스트 박스(80B)가 라인 세그먼트(60B)에 대해 도 6에 예시되어 있다. 텍스트 박스(80B)는 (스케일(74, 76)에 의해 이제 정의되는) 상대적 이미지 공간에서 (30,0), (110,0), (30,10) 및 (110,10)에 꼭짓점을 갖는다. 더욱, 이러한 텍스트 박스의 레인지는 35로부터 105까지일 것인데 이것은 라인(60)의 시작으로부터 측정된 그 종점(70)으로까지 그 시점(68)으로부터 라인 세그먼트(60B)의 레인지이기 때문이다.
직사각형 또는 텍스트 박스의 각각에 대한 2개의 삼각형에 대한 꼭짓점이 렌더링될 텍스트가 따르려는 라인의 라인 세그먼트의 각각에 대해 정의된 후에, 이들 꼭짓점 및 그 연관된 속성(예컨대, 2차원 로케이션 및 레인지 및 텍스트 스트링 좌표)은 따르게 될 라인의 라인 세그먼트의 각각에 대해 텍스트 박스를 렌더링하도록 꼭짓점 셰이더(44) 중 하나에 보내질 수 있다. 이들 텍스트 박스는, 꼭짓점 셰이더(44)에 의해 정의되고 나면 그 후, 예컨대 아래에 설명되는 방식으로 도 5의 텍스처에 저장된 바와 같이, 인코딩된 텍스트 스트링 중 하나를 사용하여, 이들 텍스트 박스 내 텍스트를 렌더링하도록 단편 셰이더(46)에 의해 사용될 수 있다.
일반적으로 말하면, 동작 동안, 단편 셰이더(46)는, 있다면, 결정된 라인 세그먼트의 각각에 대해 정의된 텍스트 박스에서의 각각의 픽셀에 대해 텍스트 이미지로부터의 어느 픽셀을 그릴지 결정한다. 더 구체적으로, 멀티-세그먼트화된 라인을 따라 텍스트를 렌더링할 때, 맵 애플리케이션(48)은 한번에 하나의 텍스트 박스씩 다양한 텍스트 박스에 텍스트 이미지로부터의 텍스트를 놓도록 단편 셰이더(46)를 사용한다. 그렇게 함에 있어서, 맵 애플리케이션(48)은 특정 텍스트 스트링을 렌더링하는 것을 시작할 따를 라인 세그먼트 중 하나를 선택하고 그 라인 세그먼트에 대해 생성된 텍스트 박스를 사용한다. 제1 선택된 라인 세그먼트 또는 텍스트 박스는 내부에 0의 레인지 값을 갖는 텍스트 박스 또는 라인 세그먼트일 수 있다. 이러한 텍스트 박스를 사용하여 동작할 때, 단편 셰이더(46)는 적절한 텍스처로부터 렌더링되도록 제1 텍스트 캐릭터의 픽셀에 액세스할 수 있고 텍스처 내 인코딩된 스트라이프(52)를 사용하여 그 텍스트 캐릭터의 중심까지의 상대적 거리를 룩업 또는 결정할 수 있다. 이러한 기능은, 텍스처 내 저장된 바와 같이, 렌더링되고 있는 캐릭터의 위치에 대한 텍스처 좌표를 얻도록 텍스처의 폭으로 나눈, 텍스처 내로의 X 좌표로 보간된 길이 값을 사용함으로써 수행될 수 있다. 텍스처 내로의 Y 좌표는 텍스처에서의 제1 픽셀 행이거나, 또는 다중 스트링이 텍스처 내로 패킹되면 텍스처 오프셋 후 제1 행이도록 컴퓨팅될 수 있다. 렌더링되고 있는 텍스트 스트링의 현재 텍스트 캐릭터를 찾아낸 때, 단편 셰이더(46)는 텍스트 스트링의 인코딩 스트라이프(52)로부터 적절한 컬러 값을 읽고, 128을 빼서 캐릭터의 중심까지의 거리를 결정한다. 보간된 길이를 더하는 것은 캐릭터의 중심까지의 길이를 준다. (이미지 공간 내로 보간된 바와 같은) 캐릭터의 중심이 텍스트 박스의 레인지 내에 들면, 그때 단편 셰이더(46)는 텍스트 박스 내 디스플레이 상에 텍스트 이미지의 픽셀 또는 픽셀들을 그린다. 그렇지만, 텍스트 캐릭터의 컴퓨팅된 중심이 텍스트 박스에 제공된 레인지의 제1 및 제2 한계 사이에 있지 않으면, 그때 현재 텍스트 캐릭터의 픽셀은 폐기되어야 하고 아무것도 그려지지 않는다. 더 구체적으로, 단편 셰이더(46)는 픽셀 대 픽셀 기준으로 텍스트 박스에 텍스트 캐릭터의 각각의 픽셀을 놓을지 여부의 결정을 수행하고, 그리하여 텍스트 이미지의 픽셀이 분석된 각각의 개개의 픽셀에 대해 현재 렌더링되고 있는 텍스트 박스의 레인지 내에 드는 중심점을 갖는 텍스트 캐릭터와 연관되는지 여부의 결정을 수행한다. 물론, 소망된다면, 단편 셰이더(46)는 (텍스트 박스의 대응하는 픽셀을 채우려 시도할 때) 텍스트 이미지의 각각의 픽셀 열에 대해 이러한 분석을 수행할 수 있고 이러한 경우에는 캐릭터의 중심이 텍스트 박스의 레인지 내에 드는지 여부에 의존하여 텍스트 박스에 열의 텍스트 이미지 픽셀을 그리든지 그리지 않든지 할 것이다. 어떠한 이벤트에서든, 어떠한 특정 픽셀 또는 픽셀 열도 폐기되지 않을 때, 단편 셰이더(46)는 전과 같이 동일한 텍스처 X 좌표, 및 텍스처 높이로 나눈, (렌더링되고 있는 열의 특정 행에 의존하여) 꼭짓점 속성으로 들어간 하나 이상의 보간된 Y 텍스처 좌표를 사용하여 픽셀의 열에서 텍스트에 대한 컬러를 룩업할 수 있다. 이것은 텍스트 위 중심 인코딩 픽셀에 대해 정정하는, 렌더링된 텍스트로부터의 대응하는 픽셀을 주어야 한다.
물론, 텍스트 캐릭터의 중심이 텍스트 박스의 레인지 밖에 있기 때문에 텍스트 캐릭터의 픽셀이 텍스트 박스에 그려지지 않으면, 그때 맵 애플리케이션(48)은 (라인을 따라 다음 또는 후속 라인 세그먼트와 연관된) 다음 또는 후속 텍스트 박스를 프로세싱 또는 렌더링할 때 그 텍스트 캐릭터를 그리도록 단편 셰이더(46)를 사용할 것이다. 단편 셰이더(46)는 셰이더(46)가 텍스트 박스를 채울 때까지, 즉, 텍스트 박스의 종단에 도달할 때까지 텍스트 캐릭터의 픽셀이 현재 선택된 텍스트 박스에서 렌더링되어야 하는지 아닌지 결정하는 프로세스를 반복한다. 텍스트 캐릭터의 픽셀이 특정 텍스트 박스를 사용하거나 그 내에 렌더링되고 나면, 단편 셰이더(46)는 다음의 텍스트 캐릭터의 픽셀을 동일 텍스트 박스 내에 렌더링하려 시도하고 그것이 텍스트 박스의 종단에 도달할 때까지 이러한 프로세스를 반복한다. 이해될 바와 같이, 라인 세그먼트에 대해 형성된 텍스트 박스의 사이즈는 작을 수 있고, 실제로 캐릭터가 (그 중심점이 텍스트 박스의 레인지 밖으로 뻗어 있어) 하나의 텍스트 박스에서 렌더링되지 않으면 캐릭터가 후속 텍스트 박스(즉, 텍스트 캐릭터의 중심이 들어가는 텍스트 박스)에서 렌더링될 것이기 때문에 캐릭터의 사이즈보다 더 작을 수 있다. 이러한 프로세스 동안, 텍스트 캐릭터가 렌더링되지 않는 텍스트 박스가 생성될 수 있다.
이러한 프로세스의 결과는 텍스트 이미지 내 텍스트 캐릭터의 각각이 뒤집히지 않게(즉, 텍스트 박스의 오리엔테이션으로 똑바로) 그리고 라인을 따르게 렌더링되는 것이지만, 여기서 각각의 텍스트 캐릭터는 멀티-세그먼트화된 라인을 올바르게 따르도록 라인을 따른 오리엔테이션으로 회전된다. 결과로서, 텍스트 스트링은 회전되지 않은 방식으로 미리-컴퓨팅되어 텍스처에 저장될 수 있고, 여러 다른 곡률로 다중 라인에 대해 거듭 사용될 수 있다.
도 7a 및 도 7b를 이제 참조하면, 도 3 및 도 3a의 것과 같이, 인코딩된 텍스처 또는 텍스트 스트링 룩업 테이블을 사용하여 이미지 내 라인을 따라 텍스트를 렌더링하는데 사용될 수 있는 방법, 루틴 또는 프로세스(100)의 프로세스 흐름 선도 또는 플로차트가 더 상세하게 예시되어 있다. 단지 일례로서, 루틴(100)은, 멀티-세그먼트화된 도로의 경계를 따라 또는 그 내에 그리고 더 구체적으로는 그 도로의 중심을 따르는 라인을 따라 텍스트를 렌더링하여, 렌더링된 텍스트가 도로의 다양한 세그먼트에 걸쳐 이어져 도로에서 중심에 놓이게 되도록 하기 위해 도 2의 것과 같은 맵 렌더링 엔진에서 사용될 수 있다. 일반적으로 말하면, 루틴 또는 프로세스(100)는, 프로세서(30a, 30b)에서 실행되는, 맵 애플리케이션(48)의 일부분인 루틴 및/또는 꼭짓점 및 단편 셰이더(44, 46)에 의해 정의된 루틴을 포함하는 하나 이상의 소프트웨어 루틴 또는 애플리케이션으로 구현될 수 있다. 이들 루틴은 자바스크립트, C 코드 등과 같은 어떠한 소망의 언어로라도 쓰이거나 구현될 수 있고, 프로세서(30a, 30b) 중 하나 또는 둘 다에서 실행될 수 있다. 부가적으로, 이들 루틴은 디스플레이 디바이스(34) 상에 이미지를 렌더링하도록 래스터라이저(36)를 사용할 수 있다.
어떠한 이벤트에서든, 루틴(100)의 블록(102)은 텍스트 캐릭터가 적용되려고 따르는, 멀티-섹션의 도로와 같은 이미지 특징을 그리거나 형성할 수 있다. 이 프로세스의 일부분으로서 또는 그 완료 후에, 블록(104)은 텍스트 스트링이 렌더링되려고 따르는, 멀티-섹션의 도로와 같은 이미지 특징을 따르는 멀티-세그먼트화된 라인을 결정한다. 일례에 있어서, 이 멀티-세그먼트화된 라인은 도 4에 예시된 라인(60)과 같이, 멀티-섹션의 도로의 중심선을 따를 수 있다. 다음으로, 블록(106)은 멀티-세그먼트화된 라인의 인접 섹션의 각각의 쌍의 교차점에서 멀티-세그먼트화된 라인을 따르는 점을 찾아내거나 그 위치를 찾는다. 그리하여, 블록(106)은 텍스트가 렌더링되려고 따르는 라인의 각각의 라인 세그먼트의 시점 및 종점을 찾아내고, 멀티-세그먼트화된 라인의 각각의 세그먼트에 고유의 레인지를 할당할 수 있다. 할당된 레인지는 라인 세그먼트의 경계를 가로질러 연속해서 또는 심리스하게 뻗어있어야 한다. 즉, 라인의 레인지는 2개의 라인 세그먼트가 동일 레인지를 갖지 않고 단지 공통 종점을 공유할 뿐이도록 하나의 라인 세그먼트의 시작에서 시작하여 그 라인 세그먼트를 통해 연속해서 그리고 그 후 다음의 라인 세그먼트의 각각을 통해 뻗어있을 수 있다.
다음으로, 블록(108)은 도 5 및 도 6에 관해 위에서 논의된 방식으로 각각의 라인 세그먼트에 대해 텍스트 박스를 형성한다. 이들 텍스트 박스의 꼭짓점은 예컨대 맵 애플리케이션(48) 내 루틴에서 정의 또는 컴퓨팅될 수 있고 그 후 래스터라이저(36)를 사용하여 렌더링되고 있는 이미지에 텍스트 박스를 형성하도록 도 2의 꼭짓점 셰이더(44) 중 하나에 보내질 수 있다. 물론, 텍스트 박스의 윤곽은, 텍스트 박스 자체가 렌더링되고 있는 이미지의 시각적 애스펙트는 아닐 것이므로(그렇게 소망되면 그럴 수 있기는 하지만), 투명하게 되거나 또는 컬러를 갖지 않을 것이다. 각각의 텍스트 박스의 꼭짓점은 이미지 내 텍스트 박스 꼭짓점의 로케이션을 지정할 것이고, 속성으로서, 텍스트 박스와 연관된 라인 세그먼트의 범위를 그리고, 필요하다면, 텍스트 박스에서 렌더링되려는 텍스처의 텍스트 스트링에 대한 하나 이상의 참조를 포함할 것이다. 즉, 소망된다면, 텍스트 박스 꼭짓점은, 속성으로서, 라인을 따라 렌더링될 텍스트 스트링이 위치하는 텍스처 내 로케이션으로의 포인터를 포함할 수 있다.
다음으로, 블록(110)에서, 루틴 또는 프로세스(100)는 참조된 텍스트 스트링을 렌더링하기 시작하도록 따를 텍스트 박스 중 첫 번째 것을 선택한다. 이러한 텍스트 박스는 일반적으로는 영(0) 레인지 값을 갖는 텍스트 박스일 것인데 이러한 레인지 값이 텍스처 내 저장된 텍스트 스트링을 렌더링하기 시작하도록 따를 시작 위치를 나타내기 때문이다. 그렇지만, 이것은 꼭 그럴 필요가 있는 것은 아니고, 텍스트는 결정된 라인을 따라 어떠한 소망의 로케이션 또는 위치에서라도 시작하는 라인을 따라 렌더링될 수 있다. 어떠한 이벤트에서든, 블록(112)(도 7b)은 라인을 따라 현재 로케이션으로서 텍스트가 렌더링되려는 현재 또는 선택된 텍스트 박스에서 시작점의 위치를 찾는다. 이러한 시작점은 일반적으로는 (첫 번째 텍스트 박스를 제외하고는) 텍스트 박스의 시작 또는 전단에서일 것이다. 그 후 블록(114)은 라인을 따른 현재 로케이션과 연관된 레인지 값에 대응하는 텍스처 내 저장된 바와 같은 텍스트 스트링 내 텍스트 캐릭터의 열과 연관된 픽셀 또는 픽셀 세트를 획득한다.
그 후 블록(116)은 텍스트 캐릭터 전체가 라인을 따른 현재 로케이션에서의 현재 텍스트 박스에 놓이거나 렌더링되려는 것이면 (텍스트 사이즈가 현재 텍스트 박스의 일부분으로 지정된 사이즈 내에 맞게 되도록 보간될 때) 그들 픽셀이 연관되는 텍스트 캐릭터의 중심이 현재 텍스트 박스의 레인지에 있는지 결정한다. 블록(116)은 고려되고 있는 텍스트 캐릭터의 픽셀 바로 위 텍스처의 인코딩 스트라이프(52)를 읽음으로써 이러한 테스트를 수행할 수 있다. 즉, 블록(116)은 128의 적색 컬러 값을 갖는 현재 텍스트 캐릭터에 대한 인코딩 스트라이프(52) 내에 (즉, 0 또는 255 값의 픽셀 로케이션을 가로질러 횡단함이 없이) (텍스처의 X 방향으로) 픽셀 로케이션을 결정하도록 인코딩 스트라이프(52)를 읽을 수 있고, 그 후 그 위치를 고려되고 있는 텍스트 캐릭터의 (텍스처의 X 방향을 따른) 중심으로서 인식한다. 대안으로 또는 부가적으로, 블록(116)은 현재 텍스트 캐릭터의 중심까지의 거리를 결정하기 위해 인코딩 스트라이프(52) 내 폭 인코딩을 사용할 수 있다. 현재 텍스트 박스 내 놓이도록 적절히 보간될 때, 현재 텍스트 캐릭터의 중심 픽셀 로케이션이 현재 텍스트 박스의 레인지 내에 있으면, 그때 블록(118)은 라인을 따른 현재 로케이션에서 (적절히 보간된 사이즈로) 현재 텍스트 박스에서 텍스트 캐릭터의 현재 열의 픽셀 모두를 렌더링한다. 다른 한편으로, 현재 텍스트 박스 내에 놓이도록 적절히 보간될 때, 텍스트 캐릭터의 중심 픽셀 로케이션이 현재 텍스트 박스의 레인지 내에 있지 않으면, 블록(118)은 텍스트 캐릭터의 현재 픽셀 또는 현재 픽셀 열이 텍스트 박스에서 렌더링되지 않도록 (블록(122)에 의해) 스킵된다. 이들 프로시저는 그렇게 소망된다면 단편 셰이더(46)에서 수행될 수 있다. 물론, 단편 셰이더(46)가 텍스트 박스 내에서 텍스트 캐릭터를 렌더링하고 있을 때, 텍스트 캐릭터의 픽셀은 텍스트 박스의 X 및 Y 오리엔테이션을 따라 렌더링될 것이여서, 텍스트 캐릭터는 텍스트 박스의 오리엔테이션에 의해 정의되는 바와 같이 라인을 따라 똑바른 위치에 렌더링될 것이다. 더욱, 동작에 있어서, 루틴(100)은, 텍스처의 특정 픽셀 열에서의 각각의 픽셀에 대해, 그 픽셀이 속하는 텍스트 캐릭터가 텍스트 박스의 레인지 내에 드는 중심 위치를 갖는지 단편 셰이더가 따로따로 분석하도록 픽셀 대 픽셀 기준으로 연속하여 블록(116, 118)을 수행할 수 있다. 그렇지만, 단순화를 위해 도 7a 및 도 7b의 플로차트는 픽셀 대 픽셀 동작을 나타내지 않고 대신에 픽셀 열 대 픽셀 열 기준으로 텍스트 캐릭터 픽셀의 프로세싱을 나타내고 있다.
어떠한 이벤트에서든, 텍스처의 특정 픽셀 열의 픽셀 모두가 분석된 후에, 블록(124)은 라인을 따른 현재 로케이션을 다음 위치로 증분하고 블록(126)은 현재 로케이션이 현재 텍스트 박스의 후단을 넘어서는지 결정한다. 그러하지 않다면, 제어는 다음 픽셀(또는 텍스처의 픽셀 열에서의 픽셀 세트)을 획득하는 블록(114)으로 되돌아가고, 블록(116-126)의 단계가 텍스트 캐릭터에서의 다음 픽셀 열에 대해 반복되어 그들 픽셀이 현재 텍스트 박스 내에서 렌더링되어야 하는지 알아본다.
그렇지만, 블록(126)에서, 라인의 새로운 로케이션이 현재 텍스트 박스의 종단을 넘어서 또는 그 밖에 있는 것으로 발견되면, 그때 (라인을 따라 텍스트를 그리는 애플리케이션(48)에서 실행될 수 있는) 블록(130)은 라인에 대한 모든 텍스트 박스가 렌더링되었는지 결정한다. 그러하지 않다면, 블록(132)은 렌더링할 다음 텍스트 박스를 결정하고, 그 텍스트 박스의 세부 사항을 렌더링을 위해 단편 셰이더(46)에 제공한다. 그 후 제어는 새로운 텍스트 박스와 연관된 텍스트 이미지의 시작점을 새로운 텍스트 박스의 시작에 의해 정의된 라인을 따른 로케이션에 대응하는 그 점으로 결정하고 이러한 점을 라인을 따른 현재 로케이션으로 설정하는 112에 제공된다. 그 후 단편 셰이더(46)는 다음 텍스트 박스에 대해 블록(114-126)을 구현하도록 동작한다. 블록(130)이 마지막 텍스트 박스가 렌더링되었다고 결정할 때, 라인을 따른 텍스트 스트링의 렌더링의 프로세스는 텍스처에서의 하나의 텍스트 스트링에 대해 완료될 것이다.
이해될 바와 같이, 본질적으로 루틴(100)은 각각의 텍스트 캐릭터의 중심이 들어가 있을 선택된 또는 결정된 라인을 따른 텍스트 박스를 찾아내도록 동작하고, 그 텍스트 박스에서 텍스트 캐릭터 전체를 그린다. 라인의 레인지가 서로에 관해 텍스트 캐릭터의 위치를 결정하는데 사용되고 이러한 레인지는 인접 텍스트 박스의 교차점에서 연속적이고 끊어지지 않는 것이기 때문에, 텍스트 캐릭터는 그것들이 렌더링되는 텍스트 박스에 관해 올바른 방향으로(똑바르게) 각각 렌더링될 것이다. 그렇지만, 각각의 텍스트 박스의 종단이 텍스트 박스의 레인지를 넘어 뻗어있기 때문에, 루틴은 텍스트 캐릭터 전체가 하나의 그리고 단 하나의 텍스트 박스, 즉, 텍스트 캐릭터의 중심이 들어가는 레인지 값을 갖는 텍스트 박스에서 렌더링될 수 있고 렌더링될 것임을 보장한다. 이 시스템은, 연속적 곡선에 대한 경우일 수 있는 바와 같이 텍스트 캐릭터가 각각의 텍스트 박스에서 렌더링되지 않을 수 있는 경우, 텍스트 박스가 매우 작은 사이즈일 수 있게 한다. 그리하여, 이 기술은 텍스트가 어떠한 곡선을 따라서라도 올바르게 렌더링 가능하게 한다.
물론 도 7a 및 도 7b의 여러 다른 블록에 의해 지정된 다양한 액션은 다른 방식 또는 시퀀스로 재배열 또는 순서바뀜 및 수행될 수 있음을 이해할 것이다. 더욱, 텍스트 박스의 결정 또는 확립은, 본 명세서에서 설명되는 바와 같이, 텍스트 렌더링이 시작하기 전에 텍스트 박스가 미리 확립 또는 미리 결정되는 대신에, 렌더링될 텍스트가 현재 텍스트 박스의 밖에 들어간다고 결정될 때 각각의 텍스트 박스가 필요로 되는대로, 온 더 플라이로 수행될 수 있다.
텍스처에서의 텍스트 스트링에 대한 인코딩 스트라이프(52)가 연관된 텍스트 스트링 바로 위 또는 곧장 위에 있는 것으로 설명되고 있지만, 이러한 인코딩 스트라이프(52)는 텍스처에서 텍스트 스트링 아래 제공될 수 있거나 소망된다면 연관된 텍스트 스트링의 픽셀에 다소 상관 또는 참조되는 방식으로 룩업 테이블 또는 또다른 텍스처에서 제공될 수도 있다. 또한, 텍스트 스트링에서의 각각의 텍스트 캐릭터의 중심의 위치는 인코딩 스트라이프(52)를 사용하지 않는 방식을 포함하여 본 명세서에서 설명되는 것과는 다른 방식으로 인코딩될 수 있다. 또한, 인코딩 스트라이프가 사용되는 경우에 있어서, 인코딩 기술은 예컨대 본 명세서에서 설명되는 특정 픽셀 값을 사용하는 것에 한정되지 않는다. 그리하여, 본 명세서에서는 인코딩 스트라이프(52) 내에서 텍스트 캐릭터의 중심을 나타내는데 128의 값이 사용되는 것으로 설명되고 있지만, 다른 값이 대신 사용될 수 있다. 마찬가지로, 본 명세서에서 설명되는 인코딩 스트라이프(52)에는 픽셀 행의 적색 컬러 값이 사용되고 있지만, 하나 이상의 다른 픽셀 컬러 값이 대신 사용될 수 있다.
또한, 위에서 언급된 바와 같이, 라인을 따라 텍스트 스트링을 렌더링하고 있는 단편 셰이더는 텍스트 캐릭터의 중심이 텍스트 박스의 레인지 내에 드는지 또는 텍스트 캐릭터가 현재 렌더링되고 있는 텍스트 박스의 레인지 밖에 있는지 단편 셰이더가 결정할 수 있도록 각각의 텍스트 캐릭터의 중심이 텍스처 내에서 어디에 있는지 결정할 수 있는 것이 중요하다. 위에서 언급된 바와 같이, 캐릭터의 중심을 결정하는 하나의 방식은 텍스트 캐릭터의 단일 스트링 또는 그룹에 단일 인코딩 스트라이프가 사용되는 도 3 및 도 3a에 예시된 것과 같이 텍스처 또는 이미지 룩업 테이블 자체에서 캐릭터의 중심을 인코딩하는 것일 수 있다.
그렇지만, 다른 인코딩 기술을 사용하여, 다양한 여러 다른 텍스트 스트링의 부분들로서 (또는 동일 텍스트 스트링의 부분들로서) 렌더링될 여러 다른 텍스트 캐릭터를 텍스처 내 한 세트의 글리프(glyph)로서 저장함으로써 텍스처 또는 텍스트 스트링 룩업 테이블의 사이즈를 줄이는 것이 가능하다. 부가하여, 그러한 추가적 인코딩 기술은 텍스트 스트링의 각각의 텍스트 캐릭터에 대한 중심 및/또는 폭 정보를 포함하는 각각의 텍스트 스트링에 대한 제1 인코딩 데이터 및 텍스트 스트링의 각각의 텍스트 캐릭터 로케이션에서 텍스트 캐릭터로 사용되려는 특정 글리프를 가리키는 제2 인코딩 데이터를 제공할 필요가 있다. 예컨대, 도 8은 3개의 여러 다른 텍스트 스트링에 대한 인코딩 정보(202, 204, 206)를 저장하는 텍스처(200)를 예시하는데, 여기서 이들 텍스트 스트링은 예컨대 맵 타일에서 여러 다른 도로에 대한 라벨 또는 명칭을 정의할 수 있다. 도 8의 텍스트 인코딩 정보(202, 204, 206)의 예시의 라인은 예컨대 텍스트 스트링 "Freemont Ave", "Aurora Ave" 및 "First St"을 정의할 수 있다. 인코딩 정보(202, 204, 206)와 연관된 텍스트 스트링의 각각은, 예컨대, 맵 이미지 내 여러 다른 라인을 따라 렌더링되도록 제공된다. 이러한 경우에 있어서, 인코딩 정보(202, 204, 206) 세트의 각각은 각자 인코딩 스트라이프(202A, 204A, 206A)를 포함하는데, 각각의 특정 픽셀 열로부터 연관된 텍스트 캐릭터의 중심까지의 거리 및/또는 텍스트 스트링에서의 각각의 텍스트 캐릭터의 중심을 표시하는 픽셀 값을 갖는다. 인코딩 스트라이프(202A, 204A, 206A)는 도 3 및 도 3a의 인코딩 스트라이프(52)와 유사하거나 똑같다. 또, 단지 예시를 위해, 텍스트 스트링의 각각의 텍스트 캐릭터의 중심은 인코딩 스트라이프에서의 작은 수직선에 의해 나타나 있다. 그렇지만, 텍스처에서의 텍스트 캐릭터를 정의하는 픽셀 값의 실제 세트를 인코딩 스트라이프(202A, 204A, 206A)의 각각의 바로 아래에 저장하는 대신에, 텍스트 스트링 인코딩 정보(202, 204, 206)의 세트의 각각 내에 제2 인코딩 라인이 제공된다. 인코딩 라인(202B, 204B, 206B)으로 도 8에 예시된 이들 제2 인코딩 라인은 본질적으로는 텍스처(200) 내에 저장된 글리프 필드(210) 내 위치로의 포인터의 세트이다. 글리프 필드(210) 내 글리프의 각각은 텍스트 스트링 인코딩 정보(202, 204, 206)에 의해 정의된 텍스트 스트링 중 하나 이상에서 사용되는 단일 텍스트 캐릭터일 수 있다. 이러한 경우에 있어서, 글리프 필드(210) 내 글리프 중 하나 이상은 텍스트 스트링 인코딩 정보(202, 204, 206)에 의해 정의된 동일한 또는 여러 다른 텍스트 스트링에서 한번보다 더 많이 사용될 수 있다.
그리하여, 도 8에 예시된 인코딩 기술에 있어서, 텍스트 스트링 인코딩 정보(202, 204, 206)의 세트 또는 각각의 라인은 연관된 텍스트 스트링 내 각각의 캐릭터(또는 글리프)의 폭, 자간 및 중심과 더불어 연관된 텍스트 스트링 내 여러 다른 텍스트 캐릭터 또는 글리프의 서로에 대한 상대적 자간을 나타내는 픽셀 값 세트(202A, 204A, 206A)로서 형성된 제1 인코딩 데이터 세트를 포함한다. 또한, 텍스트 스트링 인코딩 정보(202, 204, 206)의 세트 또는 각각의 라인은 글리프 필드(210)에 저장된 바와 같은 글리프의 위치 또는 로케이션을 정의하여 연관된 텍스트 스트링 내 그 위치에서 사용할 특정 텍스트 캐릭터를 정의하는 제2 픽셀 세트 또는 라인(202B, 204B, 206B)을 포함한다.
제2 또는 추가적 인코딩 라인(202B, 204B, 206B)은 제1 인코딩 라인(202A, 204A, 206A)에, 아래와 같이, 인접하는 텍스처(200) 내 별개 픽셀 라인으로 저장될 수 있다. 일 실시예에 있어서, 제2 인코딩 데이터 라인(202B, 20BB, 206B)은 예컨대 제1 인코딩 데이터 라인(202A, 204A, 206A)에서 정의된 바와 같은 각각의 텍스트 캐릭터의 중심에서 시작하는 별개의 글리프 포인터 값 세트를 포함할 수 있다. 일례로서, 각각의 글리프 포인터 값 세트는 글리프 필드(210)에서의 특정 글리프의 로케이션을 함께 가리키는 4개의 인코딩된 픽셀 값을 포함할 수 있다. 단지, 일례로서, 글리프 필드(210)에 저장된 바와 같은 참조된 글리프의 X 위치는 2개의 픽셀 값(제1 및 제2 픽셀 값)의 제1 세트에 저장될 수 있는 한편 글리프 필드(210)에 저장된 바와 같은 참조된 글리프의 Y 위치는 2개의 픽셀 값(제3 및 제4 픽셀 값)의 제2 세트에 저장될 수 있다. 더 구체적 예로서, X 좌표는 256으로 나눈 참조된 글리프의 X 값을 제1 픽셀 로케이션에 저장하고 나머지(X 모듈로 256)를 제2 픽셀 로케이션에 저장함으로써 제1 및 제2 픽셀 값에 저장될 수 있다. 유사한 방식으로, 참조된 글리프의 Y 좌표는 256으로 나눈 참조된 글리프의 Y 값을 제3 픽셀 로케이션에 저장하고 나머지(Y 모듈로 256)를 제4 픽셀 로케이션에 저장함으로써 제3 및 제4 픽셀 값에 저장될 수 있다. 물론, 텍스처(200) 내 다른 위치로(또는 글리프가 저장되는 다른 텍스처 내 로케이션으로도)의 로케이션 포인터를 갖는 픽셀 값을 인코딩 또는 제공하는 어떠한 다른 방식이라도 대신 사용될 수 있다. 또한, 글리프 포인터가 참조하는 로케이션은 연관된 글리프의 중심, 상부 좌측 코너, 하부 우측 코너와 같은 글리프 로케이션의 코너, 또는 글리프의 어떠한 다른 소정 위치라도 될 수 있다. 텍스처(200)에 저장된 바와 같은 글리프가 미리 결정되거나 미리 정해진 사이즈일 수 있기는 하지만, 그들 사이즈는 또한 가변일 수도 있다. 이러한 후자의 경우에 있어서, 인코딩 라인(202A, 204A, 206A)은 복원될 글리프의 폭을 정의하는데 사용될 수 있고 글리프의 높이는 고정될 수 있다. 대안으로, 텍스트 스트링 정보(202, 204, 206)의 제2 인코딩 라인(202B, 204B, 206B)은 또한 획득될 글리프의 사이즈를 포함할 수 있다. 또 다른 실시예에 있어서, 글리프 자체는 그들 사이즈를 정의하는 한 세트의 픽셀 값을 갖고 이러한 세트의 픽셀 값은 어느 특정 글리프와 연관되는 텍스처 내 정확한 픽셀 로케이션을 결정하기 위해 우선 복원될 수 있다.
물론, 도 8의 예에 예시된 바와 같은 2개 이상의 인코딩 스트라이프의 사용은 실제로 텍스트 스트링 중 하나 이상에서 어딘가에서 사용된 각각의 텍스트 캐릭터 또는 글리프가 단 한 번만 텍스처(200)에 저장되도록 하는데, 이러한 글리프가 동일 또는 다른 텍스트 인코딩 스트라이프에 의해 여러 번 참조될 수 있기 때문이다. 이러한 듀얼 인코딩 기술은 다중의 여러 다른 라인을 따라 또는 다중 텍스트 박스 세트 내 텍스트의 렌더링을 수행하는데 사용된 텍스처를 다운로드 및 저장할 때 또는 디바이스(40) 내 프로세서(30a, 30b) 사이에서 이들 텍스처를 보낼 때 텍스처에 필요로 되는 공간 또는 데이터를 절약하거나 감축한다. 또한, 제2 데이터 인코딩 라인(202B, 204B, 206B)은, 각자, 연관된 제1 인코딩 데이터 라인(202A, 204, 206A) 바로 아래 또는 조금 아래 픽셀 행에 배치되는 것으로 도 8에 예시되어 있지만, 제2 데이터 인코딩 라인(202B, 204B, 206B)은 제1 인코딩 데이터 라인의 여러 다른 컬러 필드에 대한 픽셀 값 세트로서도 또는 제1 인코딩 데이터 라인 위와 같이, 텍스처(200)에서 다른 로케이션에 저장될 수 있다. 예컨대, 제1 인코딩 데이터 라인이 픽셀 로케이션의 행에 그 픽셀 행의 적색 픽셀 값을 사용하여 저장되면, 제2 인코딩 데이터 라인은 이 동일 픽셀 행의 청색 또는 녹색 픽셀 값에 저장될 수 있다.
어떤 경우에 있어서는, 도 9에 예시된 바와 같이, 오버랩 캐릭터를 갖는 텍스트 스트링을 생성 또는 렌더링하는 것이 바람직할 수 있다. 도 9의 예에 있어서, "r"과 "A"는, "A"의 일부(즉, 픽셀 값의 가장 좌측 열)가 "r"의 픽셀 값의 가장 우측 열과 동일한 X 좌표 상에 위치하기 때문에, 오버랩하고 있다. 도 3, 3a 및 8에 관해 예시 및 설명된 인코딩 기술은, 텍스트 스트링 내 텍스트 캐릭터의 위치가 모두 단일 라인 픽셀로 순차로 정의되어, 하나의 텍스트 캐릭터의 끝과 인접 캐릭터의 시작 사이에 뚜렷한 전이를 요구하기 때문에, 단일 텍스트 인코딩 스트링을 사용하여 그러한 텍스트를 렌더링할 수 없다.
공통 텍스트 스트링 내 오버랩하는 텍스트 캐릭터 또는 글리프의 렌더링을 허용 또는 가능하게 하기 위해, 도 3, 3a 및 8에 관해 설명된 인코딩 기술은 각각의 텍스트 스트링에 대해 다중 인코딩 라인 세트를 포함하도록 수정될 수 있다. 그러한 기술은 도 10의 텍스처(250)에 예시되어 있다. 이러한 경우에 있어서, 단일 텍스트 스트링(252)은 2개의 서로 다른 인코딩 라인 세트(254, 256)를 포함하고, 각각의 인코딩 라인은 도 8에 관해 설명된 2개의 인코딩 스트라이프를 포함하는 것으로 예시되어 있다. 이러한 경우에 있어서, (텍스트 스트링 "Freemont Ave"를 정의할 수 있는) 텍스트 스트링 정보(252)의 제1 캐릭터(260)는 상부 인코딩 라인 세트(254)에 위치하고 (X 방향으로의) 텍스트 캐릭터의 중심 및 제1 캐릭터의 중심으로부터의 거리 또는 폭을 정의하는 인코딩 스트라이프(260A)를 포함하고 제1 텍스트 캐릭터에 사용하기 위해 글리프 필드(210) 내 글리프의 로케이션을 가리키는 제2 인코딩 라인(260B)을 더 포함한다. 그렇지만, 이제, 텍스트 스트링 정보(252)의 제2 캐릭터(262)는 하부 라인(256)에 위치하고 (X 방향으로의) 제2 텍스트 캐릭터의 중심 및 제2 캐릭터의 중심으로부터의 거리 또는 폭을 정의하는 인코딩 스트라이프(262A)를 포함하고 제2 텍스트 캐릭터에 사용하기 위해 글리프 필드(210) 내 글리프의 로케이션을 가리키는 제2 인코딩 라인(262B)을 더 포함한다. 도 10에 예시된 바와 같이, 인코딩 스트라이프(260A, 262A)가 텍스처(250)의 서로 다른 행 상에 있기 때문에, 그것들은, 이미지 상에 렌더링될 때, 오버랩하는 픽셀 열 또는 픽셀 로케이션을 가질 수 있다. 그리하여, 도 10에 예시된 바와 같이, 제1 캐릭터(260A)의 가장 우측 픽셀 열은 제2 캐릭터(262A)의 가장 좌측 픽셀 열과 오버랩한다. 인코딩 스트라이프 세트(254, 256)를 읽는 단편 셰이더는 그저 텍스트 스트링(252)에 대해 렌더링할 다음 캐릭터를 인식하도록 인코딩 라인 둘 다를 읽을 필요가 있을 뿐이다. 단편 셰이더는, 예컨대, 인코딩 라인 세트(254, 256) 사이를 번갈아가며 다음 캐릭터를 찾을 수 있고, 인코딩 라인 세트(254, 256) 둘 다를 읽고 (다음 중심 위치가 어느 인코딩 라인에서 발견되는지와 무관하게) 다음 검출된 중심 위치에 기반하여 다음 캐릭터를 결정할 수 있고 등등이다. 물론, 2개의 인코딩 라인 세트(254, 256)는 텍스트 캐릭터가 오버랩하지 않는 경우에 사용될 수 있는데, 그 경우는 (1) 인코딩 라인 세트(254, 256) 중 하나가 정보를 갖지 않을 것이여서 무시될 수 있든지 또는 (2) 2개의 인코딩 라인(254, 256)의 인접 텍스트 캐릭터에 대한 인코딩 스트라이프가 서로 오버랩하지 않을 것이든지 중 하나이다. 또, 도 10에서 인코딩된 데이터 세트(270, 280)에 의해 예시된 바와 같이, 내부에 다중 인코딩 데이터 세트를 각각 갖는 다중 텍스트 스트링 인코딩 데이터 세트가 글리프 필드(210)와 함께 텍스처(250)에 저장될 수 있다.
도 11은 텍스트 캐릭터 픽셀이 중심 및 폭 인코딩 스트라이프(52)에 바로 인접하여 위치하는 경우에 있어서 단일 텍스트 스트링에 대해 2개의 인코딩 라인을 사용하는 텍스처(290)를 예시하고 있다. 구체적으로, 도 11은 글리프를 참조하는 인코딩 데이터를 사용하지 않는 도 3의 텍스처에서 오버랩하는 인코딩 데이터 라인을 적용하는 방식을 예시하고 있다. 구체적으로, 도 11의 예에서는, 2개의 인코딩 라인은 텍스트 스트링의 마지막 2개의 캐릭터인 "e"와 "." 그리고 텍스트 스트링 "Freemont Ave."의 "F"와 "r"의 오버랩을 제공하도록 사용된다.
물론, 본 명세서에서 설명된 텍스트 렌더링 및 텍스처 인코딩 기술은, 곡선 예컨대 멀티-세그먼트화된 라인을 따라 텍스트 스트링 내 개개의 텍스트 캐릭터를 렌더링하는 능력을 갖는, 맵 렌더링 시스템과 같은, 이미지 렌더링 시스템을 제공하도록 어떠한 수의 방식으로라도 개조 또는 변화될 수 있다.
이 명세서의 곳곳에 있어서, 단일 인스턴스로 설명된 컴포넌트, 동작 또는 구조를 복수의 인스턴스가 구현할 수 있다. 하나 이상의 방법의 개개의 동작이 별개의 동작으로 예시 및 설명되고 있기는 하지만, 개개의 동작 중 하나 이상은 동시다발적으로 수행될 수 있고, 어떠한 것도 동작이 예시된 순서로 수행될 것을 요구하지 않는다. 예의 구성에 있어서 별개의 컴포넌트로 제시된 구조 및 기능성은 조합된 구조 또는 컴포넌트로 구현될 수 있다. 유사하게, 단일 컴포넌트로 제시된 구조 및 기능성은 별개의 컴포넌트로 구현될 수 있다. 이들 및 다른 변형, 수정, 부가 및 개선은 본 명세서에서의 주제의 범위 내에 드는 것이다.
예컨대, 네트워크(25)는 한정되는 것은 아니지만 LAN, MAN, WAN, 모바일, 유선 또는 무선 네트워크, 사설 네트워크, 또는 가상의 사설 네트워크의 어떠한 조합이라도 포함할 수 있다. 더욱, 설명을 단순화하고 명확화하기 위해 도 1에서는 4개의 클라이언트 디바이스만이 예시되고 있지만, 어떠한 수의 클라이언트 컴퓨터 또는 디스플레이 디바이스라도 지원되고 서버(14)와 통신하고 있을 수 있는 것으로 이해된다.
부가적으로, 어떤 실시예는 로직 또는 소정 수의 컴포넌트, 모듈 또는 메커니즘을 포함하는 것으로 본 명세서에서 설명되고 있다. 모듈은 소프트웨어 모듈(예컨대, 전송 신호로 또는 머신 읽기 가능한 매체 상에 구체화된 코드) 또는 하드웨어 모듈 중 어느 것을 구성할 수 있다. 하드웨어 모듈은 어떤 동작을 수행할 수 있는 유형적 유닛이고 소정 방식으로 구성 또는 배열될 수 있다. 예시의 실시예에 있어서, 하나 이상의 컴퓨터 시스템(예컨대, 독립형, 클라이언트 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈(예컨대, 프로세서 또는 프로세서 그룹)은 본 명세서에서 설명된 바와 같은 소정 동작을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어(예컨대, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.
다양한 실시예에 있어서, 하드웨어 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예컨대, 하드웨어 모듈은 소정 동작을 수행하도록 (예컨대, 필드 프로그램가능한 게이트 어레이(FPGA) 또는 주문형 반도체(ASIC)와 같은 특수-목적 프로세서로서) 영구적으로 구성되는 전용 회로 또는 로직을 포함할 수 있다. 또한 하드웨어 모듈은 소정 동작을 수행하도록 소프트웨어에 의해 일시적으로 구성되는 (예컨대, 범용 프로세서 또는 다른 프로그램가능한 프로세서 내 포함되는 바와 같은) 프로그램가능한 로직 또는 회로를 포함할 수 있다. 전용 및 영구적으로 구성된 회로에서 또는 (예컨대 소프트웨어에 의해 구성된) 일시적으로 구성된 회로에서 기계적으로 하드웨어 모듈을 구현하는 결정은 비용 및 시간을 고려하여 유도될 수 있음을 인식할 것이다.
따라서, 하드웨어라는 용어는 엔티티가 본 명세서에서 설명된 소정 동작을 수행하기 위해 또는 소정 방식으로 동작하기 위해 물리적으로 구성되든, 영구적으로 구성(예컨대, 하드와이어드)되든 또는 일시적으로 구성(예컨대 프로그래밍)되든 그러한 유형적 엔티티를 망라하는 것으로 이해되어야 한다. 하드웨어 모듈이 일시적으로 구성되는(예컨대, 프로그래밍되는) 실시예를 고려하면, 하드웨어 모듈의 각각은 어느 일 순시에서라도 실체화 또는 구성될 필요가 없다. 예컨대, 하드웨어 모듈이 소프트웨어를 사용하여 구성된 범용 프로세서를 포함하는 경우에, 범용 프로세서는 여러 다른 시각에서 각자의 여러 다른 하드웨어 모듈로서 구성될 수 있다. 따라서, 소프트웨어는 예컨대 일 순시에서 특정 하드웨어 모듈을 구성하도록 그리고 다른 순시에서 다른 하드웨어 모듈을 구성하도록 프로세서를 구성할 수 있다.
하드웨어 및 소프트웨어 모듈은 다른 하드웨어 및/또는 소프트웨어 모듈에 정보를 제공하고 그로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈은 통신 결합되는 것으로 생각될 수 있다. 다중의 그러한 하드웨어 또는 소프트웨어 모듈이 동시에 존재하는 경우에, 통신은 하드웨어 또는 소프트웨어 모듈을 접속하는 신호 전송을 통해 (예컨대, 적절한 회로 및 버스를 통해) 달성될 수 있다. 다중의 하드웨어 모듈 또는 소프트웨어가 서로 다른 시각에 실체화 또는 구성되는 실시예에 있어서, 그러한 하드웨어 또는 소프트웨어 모듈 사이의 통신은 예컨대 다중의 하드웨어 또는 소프트웨어 모듈이 액세스할 수 있는 메모리 구조에 정보의 저장 및 검색을 통해 달성될 수 있다. 예컨대, 하나의 하드웨어 또는 소프트웨어 모듈은 동작을 수행하고 그 동작의 출력을 그것이 통신 결합되는 메모리 디바이스에 저장할 수 있다. 그 후, 추후 시각에, 또 다른 하드웨어 또는 소프트웨어 모듈이 저장된 출력을 검색 및 프로세싱하기 위해 메모리 디바이스에 액세스할 수 있다. 또한 하드웨어 및 소프트웨어 모듈은 입력 또는 출력 디바이스와의 통신을 개시할 수 있고, 자원(예컨대, 정보 컬렉션) 상에 동작할 수 있다.
본 명세서에서 설명된 예의 방법의 다양한 동작은, 적어도 일부, 관련 동작을 수행하기 위해 영구적으로 구성되거나 (예컨대, 소프트웨어에 의해) 일시적으로 구성되는 하나 이상의 프로세서에 의해 수행될 수 있다. 일시적으로 구성되든 영구적으로 구성되든, 그러한 프로세서는 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서-구현된 모듈을 구성할 수 있다. 본 명세서에서 지칭되는 모듈은 어떤 예의 실시예에서는 프로세서-구현된 모듈을 포함할 수 있다.
유사하게, 본 명세서에서 설명되는 방법 또는 루틴은 적어도 일부 프로세서-구현될 수 있다. 예컨대, 방법의 동작의 적어도 일부는 하나 이상의 프로세서 또는 프로세서-구현된 하드웨어 모듈에 의해 수행될 수 있다. 동작 중 어떤 것의 수행은 단일 머신 내 거주하는 것뿐만 아니라 소정 수의 머신에 걸쳐 배치되는 하나 이상의 프로세서 사이에 분산될 수 있다. 어떤 예의 실시예에 있어서, 프로세서 또는 프로세서들은 단일 로케이션에 (예컨대, 집 환경, 사무소 환경 내 또는 서버 팜으로서) 위치할 수 있는 한편, 다른 실시예에서는 프로세서들이 소정 수의 로케이션에 걸쳐 분산될 수 있다.
또한 하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "서비스형 소프트웨어"(SaaS)로서 관련 동작의 수행을 지원하도록 동작할 수 있다. 예컨대, 동작의 적어도 일부는 (프로세서를 포함하는 머신의 예로서) 컴퓨터 그룹에 의해 수행될 수 있고, 이들 동작은 네트워크(예컨대, 인터넷)를 통해 그리고 하나 이상의 적절한 인터페이스(예컨대, 애플리케이션 프로그램 인터페이스(API))를 통해 액세스가능하다.
동작 중 어떤 것의 수행은 단일 머신 내 거주하는 것뿐만 아니라 소정 수의 머신에 걸쳐 배치되는 하나 이상의 프로세서 사이에 분산될 수 있다. 어떤 예의 실시예에 있어서, 하나 이상의 프로세서 또는 프로세서-구현된 모듈은 단일 지리적 로케이션에 (예컨대, 집 환경, 사무소 환경 또는 서버 팜 내) 위치할 수 있다. 다른 예의 실시예에 있어서, 하나 이상의 프로세서 또는 프로세서-구현된 모듈은 소정 수의 지리적 로케이션에 걸쳐 분산될 수 있다.
이 명세서의 일부는 머신 메모리(예컨대, 컴퓨터 메모리) 내에 비트 또는 이진 디지털 신호로서 저장된 데이터 상에의 동작의 기호적 표현 또는 알고리즘의 관점에서 제시되고 있다. 이들 알고리즘 또는 기호적 표현은 다른 당업자에게 그 작업의 실체를 전하기 위해 데이터 프로세싱 분야의 당업자에 의해 사용된 기술의 예이다. 본 명세서에서 사용되는 바와 같이, "알고리즘" 또는 "루틴"은 소망의 결과에 이르는 자기 모순 없는 동작 시퀀스 또는 유사한 프로세싱이다. 이러한 맥락에 있어서, 알고리즘, 루틴 및 동작은 물리적 수량의 물리적 조작을 관련시킨다. 전형적으로, 반드시 그런 것은 아니지만, 그러한 수량은 머신에 의해 저장되거나, 액세스되거나, 전송되거나, 조합되거나, 비교되거나 그렇지 않으면 조작될 수 있는 전기적, 자기적 또는 광학적 신호의 형태를 취할 수 있다. 때로는, 주로 공통 용례의 이유로, "데이터", "컨텐트", "비트", "값", "엘리먼트", "심볼", "캐릭터", "텀즈", "넘버", "숫자" 등과 같은 단어를 사용하여 그러한 신호를 가리키는 것이 편리하다. 그렇지만, 이들 단어는 단지 편리한 라벨일 뿐이고 적절한 물리적 수량과 연관되는 것이다.
특별히 달리 서술되지 않는 한, "프로세싱", "컴퓨팅", "계산", "결정", "제시", "디스플레이" 등과 같은 단어를 사용하는 본 명세서에서의 논의는 정보를 수신, 저장, 송신 또는 디스플레이하는 하나 이상의 메모리(예컨대, 휘발성 메모리, 비-휘발성 메모리 또는 그 조합), 레지스터 또는 다른 머신 컴포넌트 내 물리적(예컨대, 전자적, 자기적 또는 광학적) 수량으로 표현된 데이터를 조작 또는 변환하는 머신(예컨대, 컴퓨터)의 액션 또는 프로세스를 지칭할 수 있다.
본 명세서에서 사용되는 바와 같이 "일 실시예" 또는 "어떤 실시예"의 어떠한 지칭이라도 실시예와 연관하여 설명된 특정 엘리먼트, 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함됨을 의미한다. 명세서에 다양한 곳에서 문구 "일 실시예에 있어서"의 나타남은 반드시 모두 동일 실시예를 가리키는 것은 아니다.
일부 실시예는 그 파생어와 함께 "결합" 및 "접속"이라는 표현을 사용하여 설명될 수 있다. 예컨대, 일부 실시예는 2개 이상의 엘리먼트가 직접적 물리적 또는 전기적 접촉하고 있음을 나타내기 위해 용어 "결합"을 사용하여 설명될 수 있다. 그렇지만, 용어 "결합"은 또한 2개 이상의 엘리먼트가 서로 직접 접촉하고 있지는 않지만 여전히 서로 협력하거나 상호작용함을 의미할 수도 있다. 실시예는 이러한 맥락에 한정되지는 않는다.
본 명세서에서 사용되는 바와 같이, 용어 "포함한다", "포함하는", "포함하고 있다", "포함하고 있는", "갖는다", "갖는" 또는 그 어떠한 다른 변형이라도 비-배타적 포함을 다루려는 의도이다. 예컨대, 엘리먼트의 리스트를 포함하는 프로세스, 방법, 물품 또는 장치는 반드시 그 엘리먼트만으로 한정되는 것은 아니고 분명하게 열거되지 않거나 그러한 프로세스, 방법, 물품 또는 장치에 태생적인 다른 엘리먼트를 포함할 수 있다. 나아가, 분명하게 반대로 서술되지 않는 한, "또는"은 배타적 또는이 아니라 포함적 또는을 가리킨다. 예컨대, 조건 A 또는 B는 다음 중 어느 하나에 의해 충족된다: A는 참(또는 존재함)이고 B는 거짓(또는 존재 않음), A는 거짓(또는 존재 않음)이고 B는 참(또는 존재), 및 A와 B 둘 다 참(또는 존재).
부가적으로, 단수 표현의 사용은 본 명세서에서의 실시예의 엘리먼트 및 컴포넌트를 설명하기 위해 채용되고 있다. 이것은 단지 편의를 위해 그리고 설명의 일반적 의미를 부여하기 위해 행해지는 것이다. 이러한 설명은 하나 또는 적어도 하나를 포함하는 것으로 읽혀져야 하고 달리 의미함이 명백하지 않은 한 단수형은 또한 복수를 포함한다.
더더욱, 도면은 단지 예시의 목적으로 맵 렌더링 시스템의 바람직한 실시예를 묘사하고 있다. 당업자는 본 명세서에서 예시된 구조 및 방법의 대안의 실시예가 본 명세서에서 설명된 원리로부터 벗어남이 없이 채용될 수 있음을 따르는 논의로부터 쉽게 인식할 것이다.
본 개시를 읽을 때, 당업자는 본 명세서에서 개시된 원리를 사용하여 맵 또는 다른 유형의 이미지를 렌더링하기 위한 시스템 및 프로세스에 대해 또 다른 부가적 대안의 구조적 및 기능적 설계를 인식할 것이다. 그리하여, 특정 실시예 및 애플리케이션이 예시 및 설명되었지만, 개시된 실시예는 본 명세서에서 개시된 바로 그 구성 및 컴포넌트에 한정되는 것은 아님을 이해해야 한다. 당업자에게 명백할 다양한 수정, 변경 및 변형은 첨부 청구범위에서 정의된 취지 및 범위로부터 벗어남이 없이 본 명세서에서 개시된 방법 및 장치의 배열, 동작 및 상세로 이루어질 수 있다.

Claims (116)

  1. 디스플레이 디바이스 상에서 이미지를 렌더링하기 위한 컴퓨터-구현된 방법으로서,
    이미지 룩업 테이블 내 픽셀로 나누어진 텍스트 캐릭터 세트로서 저장되는 텍스트 스트링(text string)을 렌더링하도록 따르는 이미지 내 라인을, 컴퓨터 디바이스를 사용하여, 결정하는 단계;
    상기 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계;
    상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스로서 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 각각 지향되는 상기 텍스트 박스를, 상기 컴퓨터 디바이스를 사용하여, 형성하는 단계;
    상기 텍스트 스트링의 텍스트 캐릭터를 렌더링할 상기 텍스트 박스 중 하나를, 상기 컴퓨터 디바이스를 사용하여, 선택하는 단계;
    상기 이미지 룩업 테이블 내 픽셀로 나누어진 텍스트 캐릭터 세트로서 저장된 상기 텍스트 스트링으로부터 상기 텍스트 캐릭터 중 하나를, 상기 컴퓨터 디바이스를 사용하여, 선택하는 단계;
    상기 텍스트 캐릭터 중 상기 하나의 중심이, 상기 이미지 상에 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계; 및
    상기 텍스트 캐릭터 중 상기 하나의 상기 중심이 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나를, 상기 컴퓨터 디바이스를 사용하여, 렌더링하고, 그리고 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나를 렌더링하지 않는 단계를 포함하는 컴퓨터-구현된 방법.
  2. 제1항에 있어서, 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나를 렌더링하는데 사용하기 위해 상기 복수의 텍스트 박스 중 다른 하나를 상기 텍스트 박스 중 상기 하나로서 선택하는 단계를 더 포함하는 컴퓨터-구현된 방법.
  3. 제1항에 있어서, 상기 이미지 룩업 테이블 내 저장된 상기 텍스트 스트링으로부터 상기 텍스트 캐릭터 중 각각의 하나를 차례로 선택하는 단계를 더 포함하고, 상기 텍스트 캐릭터 중 각각의 선택된 하나에 대해서;
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계,
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 선택된 하나를, 상기 컴퓨터 디바이스를 사용하여, 렌더링하는 단계, 및
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 선택된 하나를 렌더링하는데 사용하기 위해 상기 복수의 텍스트 박스 중 다른 하나를 상기 텍스트 박스 중 상기 하나로서 선택하는 단계를 수행하는 단계를 더 포함하는 컴퓨터-구현된 방법.
  4. 제1항에 있어서, 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하는 단계는, 상기 텍스트 캐릭터 중 상기 하나에 대한 한 세트의 인코딩 데이터를 읽는 단계를 포함하고, 상기 인코딩 데이터는 상기 텍스트 캐릭터 중 상기 하나의 상기 중심을 적어도 하나의 방향으로 지정하는 것인 컴퓨터-구현된 방법.
  5. 제3항에 있어서, 상기 텍스트 캐릭터 중 상기 하나에 대한 한 세트의 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터 중 상기 하나의 폭을 지정하는 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  6. 제1항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 라인 세그먼트 중 연관된 하나의 길이를 따라 지향된 상기 텍스트 박스의 각각을 형성하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  7. 제1항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 라인 세그먼트 중 연관된 하나의 길이를 따라 지향되고 연관된 라인 세그먼트의 상기 길이의 방향으로 상기 연관된 라인 세그먼트의 상기 레인지보다 더 큰 길이를 갖는 상기 텍스트 박스의 각각을 형성하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  8. 제7항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 각각의 텍스트 박스의 시작이, 상기 라인 세그먼트의 시작 전, 상기 연관된 라인 세그먼트의 상기 길이의 방향으로 미리 결정된 거리를 뻗어있도록 그리고 상기 텍스트 박스의 끝이, 상기 라인 세그먼트의 끝을 지나, 상기 라인 세그먼트의 방향으로 상기 미리 결정된 거리를 뻗어있도록 상기 텍스트 박스의 각각을 형성하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  9. 제8항에 있어서, 상기 미리 결정된 거리는 상기 텍스트 박스에서 형성될 때 상기 이미지 룩업 테이블에 저장된 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 하나의 폭의 반인 것인 컴퓨터-구현된 방법.
  10. 제7항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 텍스트 박스의 높이가 연관된 라인 세그먼트의 방향에 직교하여 미리 결정된 거리를 뻗어있도록 상기 텍스트 박스의 각각을 형성하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  11. 제10항에 있어서, 상기 텍스트 박스의 상기 높이는 상기 텍스트 박스에서 형성될 때 상기 이미지 룩업 테이블에 저장된 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 하나의 높이인 것인 컴퓨터-구현된 방법.
  12. 제1항에 있어서, 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하도록 그리고 상기 텍스트 캐릭터 중 상기 하나가 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나를 렌더링하도록 상기 컴퓨터 디바이스 내의 단편 셰이더(fragment shader )를 사용하는 단계를 더 포함하는 컴퓨터-구현된 방법.
  13. 이미지 렌더링 엔진으로서,
    통신 네트워크 인터페이스;
    프로세서;
    상기 프로세서에 결합된 메모리;
    상기 프로세서에 결합된 디스플레이 디바이스;
    하나 이상의 이미지 오브젝트를 정의하는 데이터를 포함하는 한 세트의 벡터 데이터를, 상기 통신 네트워크 인터페이스를 통해, 수신하고 하나 이상의 텍스트 스트링 룩업 테이블을 상기 메모리로부터 획득하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 제1 루틴으로서, 상기 텍스트 스트링 룩업 테이블 중 하나는 픽셀로 나누어진 텍스트 캐릭터 세트로서 적어도 하나의 텍스트 스트링의 텍스트 캐릭터 및 상기 텍스트 스트링과 연관된 복수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 저장하는 것인 상기 제1 루틴;
    상기 텍스트 스트링이 렌더링되려고 따르는 라인과 연관된 복수의 라인 세그먼트, 및 각각의 라인 세그먼트와 연관된 레인지를 결정하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 제2 루틴;
    상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스로서 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 각각 지향되는 상기 텍스트 박스를 결정하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 제3 루틴; 및
    상기 메모리에 저장되어, 이하의 동작들을 상기 프로세서 상에서 실행하는 제4 루틴을 포함하되, 상기 동작들은
    상기 텍스트 스트링의 텍스트 캐릭터를 렌더링할 상기 텍스트 박스 중 하나를 선택하는 동작;
    상기 텍스트 스트링의 상기 텍스트 캐릭터 중 다음 하나의 하나 이상의 픽셀을 선택하는 동작;
    상기 텍스트 캐릭터 중 상기 다음 하나의 중심이, 상기 이미지 상에 상기 텍스트 박스 중 선택된 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하는 동작; 및
    상기 텍스트 캐릭터 중 상기 하나의 중심이 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나의 상기 픽셀을 렌더링하고, 그리고 상기 텍스트 캐릭터 중 상기 하나의 중심이 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 하나의 상기 픽셀을 렌더링하지 않도록 하는 동작을 포함하는 것인 이미지 렌더링 엔진.
  14. 제13항에 있어서, 상기 제3 루틴은 꼭짓점 셰이더를 포함하는 것인 이미지 렌더링 엔진.
  15. 제13항에 있어서, 상기 제4 루틴은 단편 셰이더를 사용하는 애플리케이션을 포함하는 것인 이미지 렌더링 엔진.
  16. 제13항에 있어서, 상기 제4 루틴은 상기 이미지 룩업 테이블 내 저장된 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 각각의 하나에 대한 픽셀을 차례로 선택하고, 상기 텍스트 캐릭터 중 각각의 선택된 하나에 대해서;
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하고,
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이 상기 텍스트 박스 중 상기 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 하나를 사용하여 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 선택된 하나를 렌더링하고, 그리고
    상기 텍스트 캐릭터 중 상기 선택된 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 디스플레이 디바이스 상에 상기 텍스트 캐릭터 중 상기 선택된 하나를 렌더링하는데 사용하기 위해 상기 복수의 텍스트 박스 중 다른 하나를 상기 텍스트 박스 중 상기 하나로서 선택하는 것인 이미지 렌더링 엔진.
  17. 제13항에 있어서, 상기 제4 루틴은 상기 텍스트 캐릭터 중 상기 하나에 대한 한 세트의 인코딩 데이터를 읽음으로써 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하고, 상기 인코딩 데이터는 상기 텍스트 캐릭터 중 상기 하나의 상기 중심을 적어도 하나의 방향으로 지정하고 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 텍스트 박스 중 상기 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하도록 상기 텍스트 캐릭터 중 상기 하나의 상기 중심의 로케이션을 사용하는 것인 이미지 렌더링 엔진.
  18. 제13항에 있어서, 상기 제3 루틴은 상기 라인 세그먼트 중 연관된 하나의 길이를 따라 지향된 텍스트 박스를 형성함으로써 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 것인 이미지 렌더링 엔진.
  19. 제18항에 있어서, 상기 제4 루틴은 상기 텍스트 박스의 각각이 상기 연관된 라인 세그먼트의 상기 길이의 방향으로 상기 연관된 라인 세그먼트의 상기 레인지보다 더 큰 길이를 갖게 되도록 상기 라인 세그먼트 중 연관된 하나의 상기 길이를 따라 지향된 상기 텍스트 박스의 각각을 형성하는 것인 이미지 렌더링 엔진.
  20. 디스플레이 디바이스 상에서 렌더링되고 있는 이미지 내 라인을 따라 텍스트를 렌더링하는 방법으로서,
    텍스트 스트링과 연관된 다수의 텍스트 캐릭터 및 상기 텍스트 스트링과 연관된 상기 다수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 포함하는 텍스트 스트링 룩업 테이블을 컴퓨터 메모리에 저장하는 단계;
    상기 텍스트 스트링이 렌더링되려고 따르는 상기 이미지에서의 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를 결정하는 단계;
    상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스로서 상기 이미지에서의 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 각각 지향되는 상기 텍스트 박스를 형성하는 단계; 및
    상기 텍스트 스트링에서의 각각의 텍스트 캐릭터에 대해서;
    상기 텍스트 스트링의 상기 텍스트 캐릭터를 렌더링할 상기 텍스트 박스 중 하나를 선택하는 단계;
    상기 텍스트 스트링 룩업 테이블로부터 상기 인코딩 데이터를 읽고 상기 텍스트 캐릭터의 상기 중심 위치가, 상기 텍스트 박스 중 선택된 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하는 단계; 및
    상기 텍스트 캐릭터의 상기 중심 위치가 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 선택된 하나를 사용하여 상기 디스플레이 디바이스 상의 상기 이미지에서 상기 텍스트 캐릭터를 렌더링하거나 그렇지 않으면 상기 텍스트 캐릭터의 상기 중심 위치가, 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 복수의 텍스트 박스 중 다른 하나를 상기 텍스트 박스 중 상기 선택된 하나로서 선택하는 단계를 포함하는, 라인을 따라 텍스트를 렌더링하는 방법.
  21. 제20항에 있어서, 상기 텍스트 캐릭터 중 하나에 대해 상기 텍스트 스트링 룩업 테이블로부터 상기 인코딩 데이터를 읽는 단계는 상기 텍스트 스트링의 길이를 따른 방향으로 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치를 지정하는 인코딩 데이터를 읽는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  22. 제21항에 있어서, 상기 텍스트 캐릭터 중 상기 하나에 대해 상기 텍스트 스트링 룩업 테이블로부터 상기 인코딩 데이터를 읽는 단계는 상기 텍스트 스트링의 상기 길이를 따라 상기 텍스트 캐릭터 중 상기 하나의 폭을 지정하는 인코딩 데이터를 읽는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  23. 제20항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 복수의 라인 세그먼트 중 연관된 하나의 길이를 따라 지향된 각각의 텍스트 박스를 형성하는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  24. 제20항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 라인 세그먼트 중 연관된 하나의 길이를 따라 지향되고 연관된 라인 세그먼트의 상기 길이의 방향으로 상기 연관된 라인 세그먼트의 상기 레인지보다 더 큰 길이를 갖는 각각의 텍스트 박스를 형성하는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  25. 제24항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 각각의 텍스트 박스의 시작이, 상기 라인 세그먼트의 시작 전, 상기 연관된 라인 세그먼트의 상기 길이의 방향으로 미리 결정된 거리를 뻗어있도록 그리고 각각의 텍스트 박스의 끝이, 상기 연관된 라인 세그먼트의 끝을 지나, 상기 라인 세그먼트의 방향으로 상기 미리 결정된 거리를 뻗어있도록 각각의 텍스트 박스를 형성하는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  26. 제25항에 있어서, 상기 미리 결정된 거리는 상기 텍스트 박스에서 형성될 때 상기 텍스트 스트링과 연관된 상기 다수의 텍스트 캐릭터 중 하나의 폭의 반인 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  27. 제25항에 있어서, 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 단계는 상기 텍스트 박스의 높이가 연관된 라인 세그먼트의 방향에 직교하여 미리 결정된 거리를 뻗어있도록 각각의 텍스트 박스를 형성하는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  28. 제27항에 있어서, 상기 텍스트 박스의 상기 높이는 상기 텍스트 박스에서 형성될 때 상기 텍스트 스트링과 연관된 상기 다수의 텍스트 캐릭터 중 하나의 높이인 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  29. 제20항에 있어서, 상기 텍스트 스트링 룩업 테이블을 컴퓨터 메모리에 저장하는 단계는 상기 텍스트 스트링과 연관된 상기 다수의 텍스트 캐릭터의 각각의 중심 위치를 상기 텍스트 스트링의 각각의 픽셀 열에 대한 픽셀 값으로 정의하는 인코딩 데이터를 저장하는 단계를 포함하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  30. 제20항에 있어서, 상기 텍스트 스트링 룩업 테이블을 컴퓨터 메모리에 저장하는 단계는 상기 텍스트 스트링과 연관된 상기 다수의 텍스트 캐릭터의 각각의 중심 위치를 상기 텍스트 스트링의 각각의 픽셀 열에 대한 픽셀 값으로 정의하는 인코딩 데이터를 저장하는 단계를 포함하되, 특정 픽셀 값이 텍스트 캐릭터의 중심 위치를 정의하는데 사용되고 상기 특정 픽셀 값으로부터 증분 또는 감분되는 픽셀 값은 텍스트 캐릭터의 각각의 픽셀 열에서 상기 텍스트 캐릭터의 상기 중심 위치까지의 거리를 나타내는데 사용되는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  31. 제20항에 있어서, 상기 텍스트 스트링 룩업 테이블을 컴퓨터 메모리에 저장하는 단계는 상기 텍스트 스트링 룩업 테이블에 글리프 필드(field of glyphs) 내에 한 세트의 글리프를 저장하고 상기 텍스트 스트링 내 각각의 텍스트 캐릭터에 대한 추가적 인코딩 데이터를 저장하는 단계를 포함하고, 상기 추가적 인코딩 데이터는 상기 텍스트 스트링 내 소정 위치에서의 상기 텍스트 캐릭터로 사용하기 위해 상기 글리프 중 하나를 참조하는 것인, 라인을 따라 텍스트를 렌더링하는 방법.
  32. 제31항에 있어서, 상기 텍스트 스트링 룩업 테이블에 로케이션에 의해 서로 상관되는 것으로 상기 인코딩 데이터 및 상기 추가적 인코딩 데이터를 저장하는 단계를 포함하는, 라인을 따라 텍스트를 렌더링하는 방법.
  33. 맵 이미지 렌더링 시스템으로서,
    하나 이상의 이미지 오브젝트 및 하나 이상의 텍스트 스트링 룩업 테이블을 정의하는 데이터를 포함하는 맵-관련 벡터 이미지 데이터를 저장하는 데이터베이스로서, 상기 텍스트 스트링 룩업 테이블 중 하나는 픽셀로 나누어진 텍스트 캐릭터 세트로서 렌더링될 적어도 하나의 텍스트 스트링과 연관된 텍스트 캐릭터 및 상기 텍스트 스트링과 연관된 복수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 저장하는 것인 상기 데이터베이스; 및
    상기 맵-관련 벡터 이미지 데이터를 사용하고 상기 맵-관련 벡터 이미지 데이터를 사용하여 맵 이미지를 렌더링하도록 상기 데이터베이스에 통신 결합된 맵 이미지 렌더링 디바이스를 포함하되, 상기 맵 이미지 렌더링 디바이스는;
    프로세서,
    상기 프로세서에 결합된 메모리,
    상기 프로세서에 결합된 디스플레이 디바이스,
    상기 메모리 상에 저장된 하나 이상의 애플리케이션을 포함하고, 상기 하나 이상의 애플리케이션은, 상기 프로세서 상에서 실행될 때;
    텍스트 스트링이 렌더링되려고 따르는 라인과 연관된 복수의 라인 세그먼트 및 각각의 라인 세그먼트와 연관된 레인지를 결정하고;
    상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스로서 상기 이미지에서의 연관된 라인 세그먼트를 따라 똑바른 위치에 텍스트를 그리도록 각각 지향되고 상기 연관된 라인 세그먼트의 상기 레인지에 의해 정의된 한 세트의 레인지 값을 각각 갖는 상기 텍스트 박스를 형성하고; 그리고
    상기 텍스트 스트링에서의 각각의 텍스트 캐릭터에 대해서,
    (1) 상기 텍스트 스트링 룩업 테이블로부터 상기 인코딩 데이터를 읽고;
    (2) 상기 텍스트 캐릭터가 상기 이미지 상에서 렌더링될 때 상기 텍스트 캐릭터의 상기 중심 위치가 들어갈 레인지 값을 갖는 상기 텍스트 박스를 결정하고; 그리고
    (3) 상기 텍스트 박스 중 결정된 하나를 사용하여 상기 디스플레이 디바이스 상의 상기 이미지의 일부분으로서 상기 텍스트 캐릭터를 렌더링하는 것인 맵 이미지 렌더링 시스템.
  34. 제33항에 있어서, 상기 인코딩 데이터는 상기 텍스트 스트링과 연관된 상기 텍스트 캐릭터의 각각의 폭을 더 정의하는 것인 맵 이미지 렌더링 시스템.
  35. 제33항에 있어서, 상기 하나 이상의 애플리케이션은 상기 라인 세그먼트 중 연관된 하나의 길이를 따라 지향되고 연관된 라인 세그먼트의 상기 길이의 방향으로 상기 연관된 라인 세그먼트의 상기 레인지보다 더 큰 길이를 갖는 상기 텍스트 박스의 각각을 형성함으로써 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 하나 이상의 이미지 셰이더를 포함하는 것인 맵 이미지 렌더링 시스템.
  36. 제35항에 있어서, 상기 하나 이상의 이미지 셰이더는 각각의 텍스트 박스의 시작이, 상기 라인 세그먼트의 시작 전, 상기 연관된 라인 세그먼트의 상기 길이의 방향으로 미리 결정된 거리를 뻗어있도록 그리고 상기 텍스트 박스의 끝이, 상기 라인 세그먼트의 끝을 지나, 상기 라인 세그먼트의 방향으로 상기 미리 결정된 거리를 뻗어있도록 상기 복수의 라인 세그먼트의 각각에 대한 텍스트 박스를 형성하는 것인 맵 이미지 렌더링 시스템.
  37. 제33항에 있어서, 상기 텍스트 스트링 룩업 테이블 중 하나는 상기 텍스트 스트링과 연관된 상기 텍스트 캐릭터의 각각의 중심 위치를 상기 텍스트 스트링의 각각의 픽셀 열에 대한 픽셀 값으로 정의하는 인코딩 데이터를 저장하되, 특정 픽셀 값이 텍스트 캐릭터의 중심 위치를 정의하는데 사용되고 다른 픽셀 값이 텍스트 캐릭터의 각각의 픽셀 열에서 상기 텍스트 캐릭터의 상기 중심 위치까지의 거리를 나타내도록 상기 특정 픽셀 값으로부터 증분 또는 감분되는 것인 맵 이미지 렌더링 시스템.
  38. 제33항에 있어서, 상기 텍스트 스트링 룩업 테이블 중 하나는 상기 텍스트 스트링 룩업 테이블에 글리프 필드 내에 한 세트의 글리프를 더 저장하고 상기 텍스트 스트링과 연관된 각각의 텍스트 캐릭터에 대한 추가적 인코딩 데이터를 저장하고, 상기 추가적 인코딩 데이터는 상기 텍스트 스트링 내 소정 위치에서의 상기 텍스트 캐릭터로 사용하기 위해 상기 글리프 중 하나를 참조하는 것인 맵 이미지 렌더링 시스템.
  39. 제33항에 있어서, 상기 하나 이상의 이미지 셰이더는;
    상기 텍스트 스트링의 상기 텍스트 캐릭터를 렌더링할 상기 텍스트 박스 중 하나를 선택하고,
    상기 텍스트 캐릭터의 상기 중심 위치가, 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을지 결정하고, 그리고
    상기 텍스트 캐릭터의 상기 중심 위치가 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있을 것이면 상기 텍스트 박스 중 상기 선택된 하나를 사용하여 상기 디스플레이 디바이스 상의 상기 이미지에서 상기 텍스트 캐릭터를 렌더링하거나 그렇지 않으면 상기 텍스트 캐릭터의 상기 중심 위치가, 상기 텍스트 박스 중 상기 선택된 하나에서 렌더링될 때, 상기 텍스트 박스 중 상기 선택된 하나와 연관된 상기 라인 세그먼트의 상기 레인지 내에 있지 않을 것이면 상기 복수의 텍스트 박스 중 다른 하나를 상기 텍스트 박스 중 상기 선택된 하나로서 선택함으로써
    상기 텍스트 캐릭터가 상기 이미지 상에서 렌더링될 때 상기 텍스트 캐릭터의 상기 중심 위치가 들어갈 레인지 값을 갖는 상기 텍스트 박스를 결정하는 것인 맵 이미지 렌더링 시스템.
  40. 디스플레이 디바이스 상에서 텍스트 이미지를 렌더링하기 위한 컴퓨터-구현된 방법으로서,
    이미지에서 렌더링될 이미지 룩업 테이블 내 픽셀로 나누어진 텍스트 캐릭터 세트로서 저장되는 텍스트 스트링을, 컴퓨터 디바이스를 사용하여, 결정하는 단계;
    상기 이미지 내 특정 위치에서의 렌더링을 위해 분석하도록 상기 이미지 룩업 테이블 내 저장된 바와 같은 상기 텍스트 스트링의 텍스트 캐릭터와 연관된 하나 이상의 위치에서의 픽셀을, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계;
    상기 이미지 룩업 테이블 내 상기 텍스트 캐릭터의 중심 위치를 결정하기 위해 상기 텍스트 스트링의 상기 텍스트 캐릭터와 연관된 인코딩 데이터를, 상기 컴퓨터 디바이스를 사용하여, 상기 이미지 룩업 테이블로부터 읽는 단계; 및
    상기 이미지 룩업 테이블 내 상기 텍스트 캐릭터의 상기 중심 위치의 로케이션에 기반하여 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 내 상기 하나 이상의 위치에 위치한 상기 픽셀을, 상기 컴퓨터 디바이스를 사용하여, 렌더링하는 단계를 포함하는 컴퓨터-구현된 방법.
  41. 제40항에 있어서, 상기 이미지 룩업 테이블 내 상기 텍스트 캐릭터의 상기 중심 위치의 로케이션에 기반하여 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링하는 단계는 상기 텍스트 캐릭터의 상기 중심 위치가, 상기 이미지 상의 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 레인지 내에 있을지 결정하고 상기 텍스트 캐릭터의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 내에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  42. 제40항에 있어서, 상기 텍스트 캐릭터의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 밖에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링하지 않는 단계를 더 포함하는 컴퓨터-구현된 방법.
  43. 제40항에 있어서, 상기 텍스트 캐릭터와 연관된 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터의 폭을 지정하는 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  44. 제40항에 있어서, 상기 텍스트 캐릭터와 연관된 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터의 특정 픽셀 열에 대해 저장된 인코딩 데이터를 읽는 단계를 포함하고, 상기 인코딩 데이터는 상기 텍스트 캐릭터의 상기 특정 픽셀 열로부터 상기 텍스트 캐릭터의 상기 중심에서의 픽셀 열까지의 거리를 지정하는 것인 컴퓨터-구현된 방법.
  45. 제40항에 있어서, 상기 텍스트 캐릭터와 연관된 인코딩 데이터를 읽는 단계는 상기 이미지 룩업 테이블에 저장된 상기 텍스트 스트링의 상기 텍스트 캐릭터의 상기 픽셀에 인접하는 위치에서 상기 이미지 룩업 테이블에 저장된 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  46. 제40항에 있어서, 상기 텍스트 스트링의 상기 텍스트 캐릭터는 픽셀 필드로서 상기 이미지 룩업 테이블에 저장되고, 상기 픽셀 필드는 상기 텍스트 스트링의 상기 텍스트 캐릭터에 대한 다중 픽셀 행(row) 및 다중 픽셀 열을 갖되, 상기 인코딩 데이터는 상기 픽셀 필드에 인접하는 인코딩 데이터 행으로서 저장되고, 상기 이미지 룩업 테이블 내 텍스트 캐릭터의 중심 위치를 결정하기 위해 상기 텍스트 스트링의 상기 텍스트 캐릭터와 연관된 상기 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터의 특정 픽셀 열과 동일한 열에 있는 상기 인코딩 데이터 행에서의 위치로부터 상기 텍스트 캐릭터의 상기 특정 픽셀 열에 대한 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  47. 제40항에 있어서, 상기 이미지 룩업 테이블은 2-차원 텍스처 맵인 것인 컴퓨터-구현된 방법.
  48. 이미지 렌더링 엔진으로서;
    프로세서;
    상기 프로세서에 결합된 메모리;
    상기 프로세서에 결합된 디스플레이 디바이스;
    상기 메모리에 저장된 텍스트 스트링 룩업 테이블로서, 픽셀로 나누어진 텍스트 캐릭터 세트로서 저장된 적어도 하나의 텍스트 스트링의 텍스트 캐릭터를 포함하고 상기 텍스트 스트링과 연관된 복수의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 인코딩 데이터를 포함하는 상기 텍스트 스트링 룩업 테이블;
    상기 텍스트 스트링 룩업 테이블로부터 상기 텍스트 스트링 내 상기 텍스트 캐릭터 중 하나와 연관된 하나 이상의 픽셀을 읽도록 상기 프로세서 상에서 실행하고 상기 텍스트 스트링 룩업 테이블로부터 상기 텍스트 캐릭터 중 상기 하나와 연관된 상기 인코딩 데이터를 읽고 상기 메모리에 저장된 제1 루틴; 및
    상기 텍스트 캐릭터 중 상기 하나와 연관된 상기 인코딩 데이터를 사용하여 상기 텍스트 스트링 룩업 테이블 내 저장된 바와 같은 상기 텍스트 캐릭터 중 상기 하나의 중심을 결정하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 제2 루틴을 포함하는 이미지 렌더링 엔진.
  49. 제48항에 있어서, 상기 텍스트 스트링 룩업 테이블 내 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치의 로케이션을 정의하는 인코딩 데이터에 기반하여 상기 디스플레이 디바이스 상의 이미지 내 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 상기 하나 내 하나 이상의 위치에 위치한 픽셀을 렌더링하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 제3 루틴을 더 포함하는 이미지 렌더링 엔진.
  50. 제49항에 있어서, 상기 제3 루틴은 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치가, 상기 이미지 상의 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 레인지 내에 있을지 결정함으로써 그리고 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 내에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 상기 하나 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링함으로써 상기 텍스트 스트링 룩업 테이블 내 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치의 상기 로케이션에 기반하여 상기 이미지 내 상기 특정 위치에서 상기 텍스트 스트링의 상기 텍스트 캐릭터 중 상기 하나 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링하는 것인 이미지 렌더링 엔진.
  51. 제48항에 있어서, 각각의 텍스트 캐릭터와 연관된 상기 인코딩 데이터는 상기 텍스트 캐릭터의 폭을 지정하는 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  52. 제48항에 있어서, 각각의 텍스트 캐릭터와 연관된 상기 인코딩 데이터는 상기 텍스트 캐릭터의 각각의 한 세트의 픽셀 열의 각각에서 상기 인코딩 데이터의 상기 픽셀 열로부터 연관된 텍스트 캐릭터의 중심 픽셀 열까지의 거리를 지정하는 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  53. 제48항에 있어서, 상기 텍스트 스트링 룩업 테이블에서의 각각의 텍스트 캐릭터와 연관된 상기 인코딩 데이터는 상기 인코딩 데이터가 연관되는 상기 텍스트 캐릭터의 상기 픽셀에 인접하는 상기 텍스트 스트링 룩업 테이블에서의 소정 위치에 저장된 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  54. 제53항에 있어서, 상기 텍스트 스트링 룩업 테이블에서의 각각의 텍스트 캐릭터와 연관된 상기 인코딩 데이터는 상기 텍스트 캐릭터의 특정 픽셀 열과 동일한 상기 텍스트 스트링 룩업 테이블의 열에 저장된 텍스트 캐릭터의 상기 특정 픽셀 열에 대한 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  55. 제48항에 있어서, 상기 텍스트 캐릭터는 픽셀 필드로서 상기 텍스트 스트링 룩업 테이블에 저장되고, 상기 픽셀 필드는 상기 텍스트 스트링의 상기 텍스트 캐릭터에 대한 다중 픽셀 행 및 다중 픽셀 열을 갖되, 상기 인코딩 데이터는 텍스트 캐릭터의 특정 픽셀 열에 대한 상기 인코딩 데이터가 상기 특정 픽셀 열과 동일한 픽셀 열에 저장되게 되도록 상기 픽셀 필드에 인접하는 인코딩 데이터 행으로서 저장되는 것인 이미지 렌더링 엔진.
  56. 제48항에 있어서, 상기 텍스트 스트링 룩업 테이블은 텍스트 스트링으로서 렌더링될 다중 텍스트 캐릭터를 포함하고, 각각의 텍스트 캐릭터는 각각의 텍스트 캐릭터에 대한 다중 픽셀 행 및 다중 픽셀 열을 갖는 픽셀 필드로서 상기 텍스트 스트링 룩업 테이블에 저장되고, 인코딩 데이터는 특정 텍스트 캐릭터에 대한 상기 픽셀 필드에 인접하여 상기 특정 텍스트 캐릭터에 대한 상기 텍스트 스트링 룩업 테이블에 저장되는 것인 이미지 렌더링 엔진.
  57. 제56항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터는 각각의 텍스트 캐릭터에 대한 상기 픽셀 필드 위의 행에 저장되는 것인 이미지 렌더링 엔진.
  58. 제56항에 있어서, 상기 텍스트 스트링에서의 텍스트 캐릭터는 상기 텍스트 스트링 룩업 테이블에서 적어도 하나의 공통 행를 공유하지만 어떠한 오버랩하는 픽셀 열도 갖지 않는 각각의 텍스트 캐릭터에 대한 픽셀 필드의 단일 라인으로서 저장되는 것인 이미지 렌더링 엔진.
  59. 제56항에 있어서, 상기 텍스트 스트링에서의 텍스트 캐릭터는 상기 이미지 룩업 테이블에서 적어도 하나의 공통 픽셀 행를 공유하지만 어떠한 오버랩하는 픽셀 열도 갖지 않는 동일 라인에서의 각각의 텍스트 캐릭터 및 상기 텍스트 스트링 룩업 테이블의 어떠한 픽셀 행도 공유하지 않는 픽셀 필드의 서로 다른 라인에서의 텍스트 캐릭터에 대한 상기 픽셀 필드의 2개 이상의 라인으로서 저장되는 것인 이미지 렌더링 엔진.
  60. 제59항에 있어서, 픽셀 필드의 상기 라인 중 제1 라인에서의 적어도 하나의 텍스트 캐릭터에 대한 픽셀 필드는 픽셀 필드의 상기 라인 중 제2 라인에서의 다른 텍스트 캐릭터에 대한 픽셀 열과 오버랩하는 픽셀 열을 포함하는 것인 이미지 렌더링 엔진.
  61. 제60항에 있어서, 상기 적어도 하나의 텍스트 캐릭터 및 상기 다른 텍스트 캐릭터는 상기 텍스트 스트링에서의 인접하는 텍스트 캐릭터인 것인 이미지 렌더링 엔진.
  62. 텍스트 스트링 룩업 테이블을 생성하기 위한 방법으로서,
    다중 픽셀이 각각의 텍스트 캐릭터에 대해 컴퓨터 메모리에 저장되도록 픽셀로 나누어진 텍스트 캐릭터 세트로서 텍스트 스트링의 한 세트의 텍스트 캐릭터를, 상기 컴퓨터 메모리에 상기 텍스트 스트링 룩업 테이블을 정의하는 메모리 위치에, 저장하는 단계; 및
    상기 텍스트 스트링의 상기 한 세트의 텍스트 캐릭터의 각각의 중심 위치를 정의하는 각각의 텍스트 캐릭터에 대한 인코딩 데이터를, 상기 컴퓨터 메모리에 상기 텍스트 스트링 룩업 테이블을 정의하는 메모리 위치에, 저장하는 단계를 포함하고, 상기 한 세트의 텍스트 캐릭터의 각각에 대한 상기 인코딩 데이터는 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리 내 로케이션에서 상기 인코딩 데이터가 연관되는 상기 텍스트 캐릭터의 상기 픽셀과 조정되는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  63. 제62항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터를 저장하는 단계는 각각의 텍스트 캐릭터의 폭을 지정하는 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  64. 제62항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터를 저장하는 단계는 각각의 텍스트 캐릭터의 한 세트의 여러 다른 픽셀 위치의 각각에서 상기 텍스트 캐릭터의 중심까지의 거리를 지정하는 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  65. 제62항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터를 저장하는 단계는 각각의 텍스트 캐릭터의 한 세트의 픽셀 열의 각각에서 상기 인코딩 데이터의 상기 픽셀 열로부터 상기 텍스트 캐릭터의 중심 픽셀 열로까지의 거리를 지정하는 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  66. 제62항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터를 저장하는 단계는 상기 인코딩 데이터가 연관되는 상기 텍스트 캐릭터의 상기 픽셀에 인접하여 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에서의 소정 위치에 저장된 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  67. 제66항에 있어서, 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터를 저장하는 단계는 텍스트 캐릭터의 특정 픽셀 열과 동일한 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리의 열에 상기 텍스트 캐릭터의 상기 특정 픽셀 열에 대한 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  68. 제62항에 있어서, 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에 픽셀로 나누어진 텍스트 캐릭터 세트로서 상기 텍스트 스트링의 상기 한 세트의 텍스트 캐릭터를 저장하는 단계는 픽셀 필드로서 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에 상기 텍스트 캐릭터를 저장하는 단계를 포함하고, 상기 픽셀 필드는 상기 텍스트 스트링의 상기 텍스트 캐릭터에 대한 다중 픽셀 행 및 다중 픽셀 열을 갖되, 상기 인코딩 데이터를 저장하는 단계는 텍스트 캐릭터의 특정 픽셀 열에 대한 상기 인코딩 데이터가 상기 특정 픽셀 열과 동일한 픽셀 열에 저장되게 되도록 상기 픽셀 필드에 인접하는 인코딩 데이터 행으로서 상기 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  69. 제62항에 있어서, 상기 텍스트 스트링은 텍스트 스트링으로서 렌더링될 다중 텍스트 캐릭터를 포함하고, 각각의 텍스트 캐릭터는 각각의 텍스트 캐릭터에 대한 다중 픽셀 행 및 다중 픽셀 열을 갖는 픽셀 필드로서 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에 저장되고, 인코딩 데이터는 특정 텍스트 캐릭터에 대한 상기 픽셀 필드에 인접하여 상기 특정 텍스트 캐릭터에 대한 상기 텍스트 스트링 룩업 테이블에 저장되는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  70. 제69항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 인코딩 데이터는 각각의 텍스트 캐릭터에 대한 상기 픽셀 필드 위의 행에 저장되는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  71. 제69항에 있어서, 상기 텍스트 스트링에서의 텍스트 캐릭터는 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리에서 적어도 하나의 공통 행를 공유하지만 어떠한 오버랩하는 픽셀 열도 갖지 않는 각각의 텍스트 캐릭터에 대한 픽셀 필드의 단일 라인에 저장되는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  72. 제69항에 있어서, 상기 텍스트 스트링에서의 상기 텍스트 캐릭터는 상기 이미지 룩업 테이블에서 적어도 하나의 공통 픽셀 행를 공유하지만 어떠한 오버랩하는 픽셀 열도 갖지 않는 동일 라인에서의 각각의 텍스트 캐릭터 및 상기 텍스트 스트링 룩업 테이블의 어떠한 픽셀 행도 공유하지 않는 픽셀 필드의 서로 다른 라인에서의 텍스트 캐릭터에 대한 상기 픽셀 필드의 2개 이상의 라인에 저장되는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  73. 제72항에 있어서, 픽셀 필드의 상기 라인 중 하나에서의 적어도 하나의 텍스트 캐릭터에 대한 픽셀 필드는 픽셀 필드의 상기 라인 중 다른 하나에서의 다른 텍스트 캐릭터에 대한 픽셀 열과 오버랩하는 픽셀 열을 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  74. 제73항에 있어서, 상기 적어도 하나의 텍스트 캐릭터 및 상기 다른 텍스트 캐릭터는 상기 텍스트 스트링에서의 인접하는 텍스트 캐릭터인 것인, 텍스트 스트링 룩업 테이블을 생성하기 위한 방법.
  75. 디스플레이 디바이스 상에서 텍스트 이미지를 렌더링하기 위한 컴퓨터-구현된 방법으로서,
    이미지에서 렌더링될 텍스트 스트링과 연관된 하나 이상의 텍스트 캐릭터에 대한 한 세트의 인코딩된 데이터를 갖는 이미지 룩업 테이블에, 컴퓨터 디바이스를 사용하여, 액세스하는 단계;
    상기 텍스트 스트링과 연관된 상기 텍스트 캐릭터 중 하나에 대한 제1 및 제2 인코딩 데이터를 결정하기 위해 상기 이미지 룩업 테이블로부터 상기 한 세트의 인코딩된 데이터를, 상기 컴퓨터 디바이스를 사용하여, 읽는 단계로서, 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제1 인코딩 데이터는 상기 텍스트 스트링에서의 상기 텍스트 캐릭터의 위치에 대한 정보를 정의하고 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제2 인코딩 데이터는 상기 텍스트 캐릭터 중 상기 하나에 대해 렌더링될 상기 이미지를 정의하는 한 세트의 픽셀 값을 저장하는 상기 이미지 룩업 테이블에서의 픽셀 필드로의 참조를 정의하는 것인 상기 읽는 단계;
    상기 이미지 내 특정 위치에서의 렌더링을 위해 분석하도록 상기 이미지 룩업 테이블 내 저장된 바와 같은 상기 텍스트 캐릭터 중 상기 하나에 대해 참조된 픽셀 필드로부터 상기 텍스트 캐릭터 중 상기 하나에 대한 픽셀 값을, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계;
    상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제1 인코딩 데이터에 기반하여 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제2 인코딩 데이터에 의해 정의된 상기 픽셀 필드에 저장된 상기 텍스트 캐릭터 중 상기 하나의 중심 위치를, 상기 컴퓨터 디바이스를 사용하여, 결정하는 단계; 및
    상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치의 로케이션에 기반하여 상기 이미지 내 특정 위치에서 상기 텍스트 캐릭터 중 상기 하나의 픽셀을, 상기 컴퓨터 디바이스를 사용하여, 렌더링하는 단계를 포함하는 컴퓨터-구현된 방법.
  76. 제75항에 있어서, 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치의 로케이션에 기반하여 상기 이미지 내 상기 특정 위치에서 상기 텍스트 캐릭터 중 상기 하나의 상기 픽셀을 렌더링하는 단계는 상기 텍스트 캐릭터 중 상기 하나의 상기 중심 위치가, 상기 이미지 상의 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 레인지 내에 있을지 결정하고 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 내에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 텍스트 캐릭터 중 상기 하나의 상기 픽셀을 렌더링하는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  77. 제75항에 있어서, 상기 텍스트 캐릭터 중 상기 하나의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 밖에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 텍스트 캐릭터 중 상기 하나의 상기 픽셀을 렌더링하지 않는 단계를 더 포함하는 컴퓨터-구현된 방법.
  78. 제75항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터의 폭을 지정하는 상기 제1 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  79. 제75항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터 중 상기 하나의 특정 픽셀 열에 대해 저장된 상기 제1 인코딩 데이터를 읽는 단계를 포함하고, 상기 제1 인코딩 데이터는 상기 텍스트 캐릭터 중 상기 하나의 상기 특정 픽셀 열로부터 상기 텍스트 캐릭터 중 상기 하나의 상기 중심에서의 픽셀 열까지의 거리를 지정하는 것인 컴퓨터-구현된 방법.
  80. 제75항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는 상기 제2 인코딩 데이터에 인접하는 소정 위치에서 상기 이미지 룩업 테이블에 저장된 제1 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  81. 제75항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는, 상기 이미지 룩업 테이블의 복수의 열의 각각에 대해, 열 로케이션으로부터 상기 텍스트 캐릭터 중 상기 하나의 상기 중심의 상기 열 로케이션으로까지의 거리를 정의하는 제1 인코딩 데이터 정보를 갖는 상기 이미지 룩업 테이블의 행에 저장된 상기 제1 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  82. 제81항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는 상기 제1 인코딩 데이터의 상기 행와 연관된 상기 이미지 룩업 테이블의 행으로부터 상기 제2 인코딩 데이터를 읽는 단계를 포함하고, 상기 제2 인코딩 데이터는 상기 제1 인코딩 데이터의 상기 열 중 하나에 관해 고정된 로케이션을 갖는 것인 컴퓨터-구현된 방법.
  83. 제81항에 있어서, 상기 한 세트의 인코딩 데이터를 읽는 단계는 상기 제1 인코딩 데이터의 상기 행와 연관된 상기 이미지 룩업 테이블의 행으로부터 상기 제2 인코딩 데이터를 읽는 단계를 포함하고, 상기 제2 인코딩 데이터는 상기 제1 인코딩 데이터가 상기 텍스트 캐릭터의 중심 열을 나타내는 상기 이미지 룩업 테이블의 상기 열에서 시작하는 것인 컴퓨터-구현된 방법.
  84. 제75항에 있어서, 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제1 인코딩 데이터는 상기 이미지 룩업 테이블의 다중 열에 걸쳐 이어지는 제1 인코딩 데이터 행에 저장되고 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제2 인코딩 데이터는 상기 제1 인코딩 데이터에 의해 사용된 상기 이미지 룩업 테이블의 상기 다중 열의 서브세트를 정의하는 상기 텍스트 이미지 룩업 테이블의 복수의 열에 걸쳐 이어지는 제2 인코딩 데이터 행에 저장되고, 상기 텍스트 캐릭터 중 상기 하나의 중심 위치를 결정하기 위해 상기 텍스트 캐릭터 중 상기 하나와 연관된 상기 제1 인코딩 데이터를 읽는 단계는 상기 텍스트 캐릭터 중 상기 하나의 상기 제2 인코딩 데이터에 의해 정의된 상기 픽셀 필드에 위치한 상기 텍스트 캐릭터 중 상기 하나의 특정 픽셀 열에 대한 제1 인코딩 데이터를 읽는 단계를 포함하는 것인 컴퓨터-구현된 방법.
  85. 제75항에 있어서, 상기 이미지 룩업 테이블은 2-차원 텍스처 맵인 것인 컴퓨터-구현된 방법.
  86. 이미지 렌더링 엔진으로서;
    프로세서;
    상기 프로세서에 결합된 메모리;
    상기 프로세서에 결합된 디스플레이 디바이스;
    상기 메모리에 저장되고 한 세트의 글리프 및 하나 이상의 인코딩 데이터 섹션을 포함하는 텍스트 스트링 룩업 테이블로서, 각각의 글리프는 텍스트 캐릭터와 연관된 디스플레이가능한 이미지를 정의하는 픽셀 필드로서 저장되고, 각각의 인코딩 데이터 섹션은 이미지에서 렌더링될 텍스트 스트링을 정의하고, 각각의 인코딩 데이터 섹션은 상기 텍스트 스트링에서의 특정 텍스트 캐릭터의 위치에 대한 정보를 정의하는 제1 인코딩 데이터 및 상기 텍스트 스트링에서의 상기 특정 텍스트 캐릭터의 아이덴티티를 정의하도록 상기 글리프 중 하나로의 참조를 정의하는 제2 인코딩 데이터를 각각 포함하는 하나 이상의 캐릭터 인코딩 데이터 세트를 포함하는 것인 상기 텍스트 스트링 룩업 테이블; 및
    이미지에서 렌더링될 상기 텍스트 스트링 내 상기 텍스트 캐릭터와 연관된 글리프와 저장된 하나 이상의 픽셀의 위치를 결정하기 위해 상기 텍스트 캐릭터에 대한 특정 캐릭터 인코딩 데이터 세트의 상기 제1 및 제2 인코딩 데이터를 읽도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 루틴을 포함하는 이미지 렌더링 엔진.
  87. 제86항에 있어서, 상기 루틴은 상기 특정 캐릭터 인코딩 데이터 세트와 연관된 상기 제1 인코딩 데이터를 사용하여 상기 제2 인코딩 데이터에 의해 참조된 상기 글리프의 상기 텍스트 캐릭터의 중심을 결정하는 것인 이미지 렌더링 엔진.
  88. 제86항에 있어서, 상기 제2 인코딩 데이터에 의해 참조된 상기 텍스트 캐릭터의 상기 중심 위치의 로케이션을 정의하는 제1 인코딩 데이터에 기반하여 상기 디스플레이 디바이스 상의 이미지 내 특정 위치에서 상기 글리프 중 하나의 상기 픽셀 필드 내 하나 이상의 위치에 위치한 픽셀을 렌더링하도록 상기 프로세서 상에서 실행하고 상기 메모리에 저장된 추가적 루틴을 포함하는 이미지 렌더링 엔진.
  89. 제88항에 있어서, 상기 추가적 루틴은 상기 텍스트 캐릭터의 상기 중심 위치가, 상기 이미지 상의 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 레인지 내에 있을지 결정함으로써 그리고 상기 텍스트 캐릭터의 상기 중심이, 상기 이미지 상의 상기 텍스트 박스에서 렌더링될 때, 상기 텍스트 박스의 상기 레인지 내에 있을 때 상기 이미지 내 상기 특정 위치에서 상기 글리프 중 상기 하나의 상기 픽셀 필드 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링함으로써 상기 제1 인코딩 데이터에 기반하여 상기 이미지 내 상기 특정 위치에서 상기 글리프 중 상기 하나의 상기 픽셀 필드 내 상기 하나 이상의 위치에 위치한 상기 픽셀을 렌더링하는 것인 이미지 렌더링 엔진.
  90. 제86항에 있어서, 상기 제1 인코딩 데이터는 글리프에 의해 정의된 텍스트 캐릭터의 폭을 지정하는 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  91. 제86항에 있어서, 특정 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터는 상기 특정 텍스트 캐릭터에 대한 한 세트의 픽셀 열의 각각에서 상기 제1 인코딩 데이터의 상기 픽셀 열로부터 상기 특정 텍스트 캐릭터에 대한 상기 제2 인코딩 데이터에 의해 참조된 글리프에 의해 정의된 상기 특정 텍스트 캐릭터의 중심 픽셀 열까지의 거리를 지정하는 제1 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  92. 제86항에 있어서, 상기 텍스트 스트링에서의 각각의 텍스트 캐릭터의 상기 제1 인코딩 데이터는 각각의 텍스트 캐릭터의 상기 제2 인코딩 데이터에 인접하는 상기 텍스트 스트링 룩업 테이블에서의 소정 위치에 저장되는 것인 이미지 렌더링 엔진.
  93. 제86항에 있어서, 인코딩 데이터 세트 섹션 중 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터는 상기 인코딩 데이터 세트 섹션 중 상기 하나의 상기 텍스트 캐릭터 중 다른 하나의 상기 제2 인코딩 데이터와 동일한 글리프를 참조하는 것인 이미지 렌더링 엔진.
  94. 제86항에 있어서, 인코딩 데이터 세트 섹션 중 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터는 상기 인코딩 데이터 세트 섹션 중 제2 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터와 동일한 글리프를 참조하는 것인 이미지 렌더링 엔진.
  95. 제86항에 있어서, 상기 인코딩 데이터 섹션 세트의 각각은, 상기 텍스트 스트링 룩업 테이블의 복수의 열의 각각에 대해, 열 로케이션으로부터 상기 제2 인코딩 데이터에 의해 참조된 상기 텍스트 캐릭터의 픽셀 열의 상기 중심의 상기 열 로케이션으로까지의 거리를 정의하는 상기 텍스트 스트링 룩업 테이블의 행에 저장된 상기 제1 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  96. 제95항에 있어서, 상기 인코딩 데이터 세트 섹션의 각각은 상기 제1 인코딩 데이터의 상기 열 중 하나에 관해 상기 텍스트 스트링 룩업 테이블에서의 고정된 로케이션에 저장된 상기 제2 인코딩 데이터를 포함하는 것인 이미지 렌더링 엔진.
  97. 제96항에 있어서, 제2 인코딩 데이터는 상기 제1 인코딩 데이터에 의해 텍스트 캐릭터의 상기 중심 위치라고 나타내어지는 열에서 상기 텍스트 스트링 룩업 테이블의 열 로케이션에서 시작하여 저장되는 것인 이미지 렌더링 엔진.
  98. 제86항에 있어서, 상기 텍스트 캐릭터 중 하나에 대한 상기 제1 인코딩 데이터는 상기 텍스트 스트링 룩업 테이블의 다중 열에 걸쳐 이어지는 제1 인코딩 데이터 행에 저장되고 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제2 인코딩 데이터는 상기 제1 인코딩 데이터에 의해 사용된 상기 텍스트 스트링 룩업 테이블의 상기 다중 열의 서브세트를 정의하는 상기 텍스트 스트링 룩업 테이블의 복수의 열에 걸쳐 이어지는 제2 인코딩 데이터 행에 저장되고, 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제1 인코딩 데이터는 상기 텍스트 캐릭터 중 상기 하나의 상기 제2 인코딩 데이터에 의해 정의된 상기 글리프의 상기 픽셀 필드에 위치한 상기 텍스트 캐릭터 중 상기 하나의 중심 위치를 정의하는 것인 이미지 렌더링 엔진.
  99. 제86항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터는 각각의 텍스트 캐릭터에 대한 상기 제2 인코딩 데이터 위 상기 텍스트 스트링 룩업 테이블의 행에 저장되는 것인 이미지 렌더링 엔진.
  100. 제86항에 있어서, 인코딩 데이터 섹션 중 하나에 대한 상기 캐릭터 인코딩 데이터 세트는 상기 텍스트 스트링 룩업 테이블에서 적어도 하나의 공통 행를 공유하지만 상기 텍스트 스트링 룩업 테이블에서 어떠한 오버랩하는 열도 갖지 않는 인코딩 데이터 섹션 중 상기 하나 내 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 갖는 캐릭터 인코딩 데이터 세트의 단일 라인으로서 저장되는 것인 이미지 렌더링 엔진.
  101. 제86항에 있어서, 인코딩 데이터 섹션 중 하나에 대한 상기 캐릭터 인코딩 데이터 세트는 상기 텍스트 스트링 룩업 테이블에서 적어도 하나의 공통 행를 공유하지만 상기 텍스트 스트링 룩업 테이블에서 어떠한 오버랩하는 열도 갖지 않는 캐릭터 인코딩 데이터 세트의 동일 라인에서의 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터 및 상기 텍스트 스트링 룩업 테이블의 어떠한 행도 공유하지 않는 캐릭터 인코딩 데이터 세트의 서로 다른 라인에서의 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 갖는 캐릭터 인코딩 데이터 세트의 2개 이상의 라인으로서 저장되는 것인 이미지 렌더링 엔진.
  102. 제101항에 있어서, 캐릭터 인코딩 데이터 세트의 상기 라인 중 제1 라인에서의 적어도 하나의 텍스트 캐릭터에 대한 제1 인코딩 데이터는 캐릭터 인코딩 데이터 세트의 상기 라인 중 제2 라인에서의 다른 텍스트 캐릭터의 제1 인코딩 데이터의 열과 오버랩하는 열을 포함하는 것인 이미지 렌더링 엔진.
  103. 제101항에 있어서, 상기 적어도 하나의 텍스트 캐릭터 및 상기 다른 텍스트 캐릭터는 상기 인코딩 데이터 섹션에 의해 정의된 상기 텍스트 스트링에서의 인접하는 텍스트 캐릭터인 것인 이미지 렌더링 엔진.
  104. 텍스트 스트링 룩업 테이블을 생성하는 방법으로서,
    다중 픽셀이 각각의 글리프에 대해 컴퓨터 메모리에 저장되게 되도록 텍스트 캐릭터와 연관된 디스플레이가능한 이미지를 정의하는 픽셀 필드로서 각각 저장되는 한 세트의 글리프를, 상기 컴퓨터 메모리에 상기 텍스트 스트링 룩업 테이블을 정의하는 메모리 위치에, 저장하는 단계; 및
    하나 이상의 인코딩 데이터 섹션을, 상기 컴퓨터 메모리에 상기 텍스트 스트링 룩업 테이블을 정의하는 메모리 위치에, 저장하는 단계를 포함하되, 각각의 인코딩 데이터 섹션은 이미지에서 렌더링될 텍스트 스트링을 정의하고 각각의 인코딩 데이터 섹션은 상기 텍스트 스트링에서의 텍스트 캐릭터의 위치에 대한 정보를 정의하는 제1 인코딩 데이터 및 상기 텍스트 스트링에서의 상기 텍스트 캐릭터의 아이덴티티를 정의하도록 상기 글리프 중 하나로의 참조를 정의하는 제2 인코딩 데이터를 각각 포함하고 상기 텍스트 스트링의 텍스트 캐릭터를 각각 정의하는 하나 이상의 캐릭터 인코딩 데이터 세트를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  105. 제104항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 저장하는 단계는 상기 텍스트 스트링의 텍스트 캐릭터의 중심 위치를 정의하는 제1 인코딩 데이터를 저장하는 단계를 포함하고, 상기 캐릭터 인코딩 데이터 세트의 각각에 대한 상기 제1 인코딩 데이터는 상기 텍스트 스트링 룩업 테이블을 정의하는 상기 메모리 내 로케이션에서 동일한 캐릭터 인코딩 데이터 세트의 상기 제2 인코딩 데이터와 조정되는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  106. 제104항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 저장하는 단계는 각각의 텍스트 캐릭터의 한 세트의 여러 다른 픽셀 위치의 각각에서 텍스트 캐릭터의 중심까지의 거리를 지정하는 제1 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  107. 제104항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 저장하는 단계는 특정 텍스트 캐릭터의 한 세트의 픽셀 열의 각각에서 상기 인코딩 데이터의 상기 픽셀 열로부터 상기 특정 텍스트 캐릭터에 대한 상기 제2 인코딩 데이터에 의해 참조된 글리프에 의해 정의된 상기 특정 텍스트 캐릭터의 중심 픽셀 열로까지의 거리를 지정하는 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  108. 제104항에 있어서, 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 저장하는 단계는 각각의 텍스트 캐릭터의 상기 제2 인코딩 데이터에 인접하는 상기 텍스트 스트링 룩업 테이블에서의 소정 위치에 상기 텍스트 스트링에서의 각각의 텍스트 캐릭터의 상기 제1 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  109. 제104항에 있어서, 상기 인코딩 데이터 세트 섹션 중 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터를 저장하는 것은 상기 인코딩 데이터 세트 섹션 중 상기 하나의 상기 텍스트 캐릭터 중 다른 하나의 상기 제2 인코딩 데이터와 동일한 글리프를 참조하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  110. 제104항에 있어서, 상기 인코딩 데이터 세트 섹션 중 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터를 저장하는 것은 상기 인코딩 데이터 세트 섹션 중 제2 하나의 상기 텍스트 캐릭터 중 하나의 상기 제2 인코딩 데이터와 동일한 글리프를 참조하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  111. 제104항에 있어서, 상기 인코딩 데이터 섹션 세트의 각각을 저장하는 단계는, 상기 텍스트 스트링 룩업 테이블의 복수의 열의 각각에 대해, 열 로케이션으로부터 상기 제2 인코딩 데이터에 의해 참조된 상기 텍스트 캐릭터의 픽셀 열의 상기 중심의 상기 열 로케이션으로까지의 거리를 정의하는 상기 텍스트 스트링 룩업 테이블의 행에 상기 제1 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  112. 제111항에 있어서, 상기 인코딩 데이터 세트 섹션의 각각을 저장하는 단계는 상기 제1 인코딩 데이터의 상기 열 중 하나에 관해 상기 텍스트 스트링 룩업 테이블에서의 고정된 로케이션에 상기 제2 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  113. 제104항에 있어서, 상기 텍스트 캐릭터 중 하나에 대한 상기 제1 인코딩 데이터를 저장하는 단계는 상기 텍스트 스트링 룩업 테이블의 다중 열에 걸쳐 이어지는 제1 인코딩 데이터 행에 상기 제1 인코딩 데이터를 저장하는 단계를 포함하고 상기 텍스트 캐릭터 중 상기 하나에 대한 상기 제2 인코딩 데이터를 저장하는 단계는 상기 제1 인코딩 데이터에 의해 사용된 상기 텍스트 스트링 룩업 테이블의 상기 다중 열의 서브세트를 정의하는 상기 텍스트 스트링 룩업 테이블의 복수의 열에 걸쳐 이어지는 제2 인코딩 데이터 행에 상기 제2 인코딩 데이터를 저장하는 단계를 포함하는 것인, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  114. 제104항에 있어서, 상기 텍스트 스트링 룩업 테이블에서 적어도 하나의 공통 행를 공유하지만 상기 텍스트 스트링 룩업 테이블에서 어떠한 오버랩하는 열도 갖지 않는 상기 인코딩 데이터 섹션 중 상기 하나 내 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 갖는 캐릭터 인코딩 데이터 세트의 단일 라인으로서 인코딩 데이터 섹션 중 하나에 대한 상기 캐릭터 인코딩 데이터 세트를 저장하는 단계를 더 포함하는, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  115. 제104항에 있어서, 상기 텍스트 스트링 룩업 테이블에서 적어도 하나의 공통 행를 공유하지만 상기 텍스트 스트링 룩업 테이블에서 어떠한 오버랩하는 열도 갖지 않는 캐릭터 인코딩 데이터 세트의 동일 라인에서의 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터 및 상기 텍스트 스트링 룩업 테이블의 어떠한 행도 공유하지 않는 캐릭터 인코딩 데이터 세트의 서로 다른 라인에서의 각각의 텍스트 캐릭터에 대한 상기 제1 인코딩 데이터를 갖는 캐릭터 인코딩 데이터 세트의 2개 이상의 라인으로서 인코딩 데이터 섹션 중 하나에 대한 상기 캐릭터 인코딩 데이터 세트를 저장하는 단계를 더 포함하는, 텍스트 스트링 룩업 테이블을 생성하는 방법.
  116. 제104항에 있어서, 캐릭터 인코딩 데이터 세트의 상기 라인 중 제1 라인에서의 적어도 하나의 텍스트 캐릭터에 대한 제1 인코딩 데이터를 캐릭터 인코딩 데이터 세트의 상기 라인 중 제2 라인에서의 다른 텍스트 캐릭터에 대한 열과 오버랩하는 열에 저장하는 단계를 포함하는, 텍스트 스트링 룩업 테이블을 생성하는 방법.
KR1020147001988A 2011-06-30 2012-06-28 라인을 따른 텍스트 이미지 렌더링 KR102001191B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/174,378 2011-06-30
US13/174,283 2011-06-30
US13/174,378 US20130002679A1 (en) 2011-06-30 2011-06-30 Rendering a text image using texture map character center encoding
US13/174,403 US8760451B2 (en) 2011-06-30 2011-06-30 Rendering a text image using texture map character center encoding with character reference encoding
US13/174,283 US8400453B2 (en) 2011-06-30 2011-06-30 Rendering a text image following a line
US13/174,403 2011-06-30
PCT/US2012/044602 WO2013003567A2 (en) 2011-06-30 2012-06-28 Rendering a text image following a line

Publications (2)

Publication Number Publication Date
KR20140073480A true KR20140073480A (ko) 2014-06-16
KR102001191B1 KR102001191B1 (ko) 2019-10-01

Family

ID=47424793

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147001988A KR102001191B1 (ko) 2011-06-30 2012-06-28 라인을 따른 텍스트 이미지 렌더링

Country Status (6)

Country Link
EP (1) EP2727006B1 (ko)
JP (1) JP5959637B2 (ko)
KR (1) KR102001191B1 (ko)
CN (1) CN103765413B (ko)
DE (1) DE202012013465U1 (ko)
WO (1) WO2013003567A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101887086B1 (ko) * 2017-12-15 2018-08-09 세종대학교산학협력단 무브먼트 데이터를 다방향 벡터필드에서 시각화하는 방법 및 그 장치
KR102142238B1 (ko) * 2020-02-25 2020-08-07 주식회사 엔디소프트 소정 이미지에 포함된 축약어, 손글씨, 비정형 단어 및 문장과 같은 텍스트 정보를 추출한 후 그 추출 결과를 소정 언어로 자동 번역하는 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808617B (zh) * 2014-12-31 2020-02-07 高德软件有限公司 一种电子地图的生成、显示方法和装置
KR101755807B1 (ko) 2015-07-10 2017-07-10 김성일 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체
US20170249292A1 (en) * 2016-02-29 2017-08-31 Microsoft Technology Licensing, Llc Conditional determination of lookups in glyph processing
CN107066109A (zh) * 2016-09-10 2017-08-18 上海触乐信息科技有限公司 动态文本即时输入的方法、系统和装置
WO2020115909A1 (ja) * 2018-12-07 2020-06-11 三菱電機株式会社 入力表示制御装置、入力表示制御方法及び入力表示システム
CN111489411B (zh) * 2019-01-29 2023-06-20 北京百度网讯科技有限公司 线条绘制方法、装置、图像处理器、显卡及车辆
CN109978968B (zh) * 2019-04-10 2023-06-20 广州虎牙信息科技有限公司 运动对象的视频绘制方法、装置、设备及存储介质
CN110309824B (zh) * 2019-07-02 2021-07-02 北京百度网讯科技有限公司 文字检测方法、装置以及终端
CN112464739B (zh) * 2020-11-05 2023-05-23 福建天泉教育科技有限公司 一种文档文本易读性评测的方法及终端

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4512032A (en) * 1981-12-26 1985-04-16 Tokyo Shibaura Denki Kabushiki Kaisha Optical character recognition apparatus
US4864628A (en) * 1983-08-26 1989-09-05 Texas Instruments Incorporated Method of optical character recognition
US5134663A (en) * 1991-04-19 1992-07-28 Unisys Corporation Center line magnetic ink character recognition system
US5467411A (en) * 1991-09-26 1995-11-14 Mitsubishi Denki Kabushiki Kaisha System with approximation mechanism for recognizing graphical elements in a drawing
US5724072A (en) * 1995-03-13 1998-03-03 Rutgers, The State University Of New Jersey Computer-implemented method and apparatus for automatic curved labeling of point features
US5781660A (en) * 1994-07-28 1998-07-14 Seiko Epson Corporation Image processing method and apparatus
US5793936A (en) * 1996-09-27 1998-08-11 Texas Instruments Incorporated Center-line anti-aliasing for digital printing
US6052480A (en) * 1995-03-06 2000-04-18 Fujitsu Limited Pattern re-recognizing table generating device and pattern recognizing device to improve a reliability for a recognition of a pattern overlapping or intersecting a line in an image
US6504545B1 (en) * 1998-03-27 2003-01-07 Canon Kabushiki Kaisha Animated font characters
US20040125108A1 (en) * 2002-12-26 2004-07-01 Mccully Nathaniel M. Coordinating grid tracking and mojikumi spacing of Japanese text
US6803913B1 (en) * 1999-12-01 2004-10-12 Microsoft Corporation Warping text along a curved path
US7076505B2 (en) * 2002-07-11 2006-07-11 Metrobot Llc Method, apparatus, and computer program product for providing a graphical user interface with a linear map component
US20070211062A1 (en) * 2006-03-13 2007-09-13 International Business Machines Corporation Methods and systems for rendering complex text using glyph identifiers in a presentation data stream
US7305617B2 (en) * 2000-02-12 2007-12-04 Adobe Systems Incorporated Method for aligning text to baseline grids and to CJK character grids
US20080154911A1 (en) * 2006-12-26 2008-06-26 Dynacomware Taiwan Inc. System and method for on-line generation of asian documents with multiple font faces
US20080253656A1 (en) * 2007-04-12 2008-10-16 Samsung Electronics Co., Ltd. Method and a device for detecting graphic symbols
EP1988508A1 (en) * 2007-05-01 2008-11-05 Qualcomm Incorporated Universal rasterization of graphic primitives
US20080300053A1 (en) * 2006-09-12 2008-12-04 Brian Muller Scripted interactive screen media
US20090158144A1 (en) * 2004-02-27 2009-06-18 Research In Motion Limited Text input system for a mobile electronic device and methods thereof
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US7787708B2 (en) * 2005-06-07 2010-08-31 Ids Scheer Aktiengesellschaft Systems and methods for rendering text within symbols

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847604A (en) * 1987-08-27 1989-07-11 Doyle Michael D Method and apparatus for identifying features of an image on a video display
JP2634126B2 (ja) * 1992-07-27 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィックス表示方法および装置
JP3161834B2 (ja) * 1992-09-18 2001-04-25 株式会社ザナヴィ・インフォマティクス 車載ナビゲーションシステム
EP0652418B1 (en) 1993-11-05 1998-02-04 Koninklijke Philips Electronics N.V. Vehicle navigation display system
US6141002A (en) * 1996-11-12 2000-10-31 Opentv, Inc. System and method for downloading and rendering glyphs in a set top box
US6565610B1 (en) * 1999-02-11 2003-05-20 Navigation Technologies Corporation Method and system for text placement when forming maps
US6952215B1 (en) * 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
JP2001311625A (ja) * 2000-04-28 2001-11-09 Pioneer Electronic Corp ナビゲーション装置
JP2002351311A (ja) * 2001-05-25 2002-12-06 Zenrin Co Ltd 出力制御装置及びその方法並びにコンピュータプログラム
RU2216781C2 (ru) * 2001-06-29 2003-11-20 Самсунг Электроникс Ко., Лтд Основанные на изображениях способ представления и визуализации трехмерного объекта и способ представления и визуализации анимированного объекта
JP2005115174A (ja) * 2003-10-09 2005-04-28 Navitime Japan Co Ltd 地図表示装置、地図表示方法および地図表示プログラム
EP2338152B1 (en) * 2008-10-20 2017-01-25 BlackBerry Limited Method and system for rendering of labels

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4512032A (en) * 1981-12-26 1985-04-16 Tokyo Shibaura Denki Kabushiki Kaisha Optical character recognition apparatus
US4864628A (en) * 1983-08-26 1989-09-05 Texas Instruments Incorporated Method of optical character recognition
US5134663A (en) * 1991-04-19 1992-07-28 Unisys Corporation Center line magnetic ink character recognition system
US5467411A (en) * 1991-09-26 1995-11-14 Mitsubishi Denki Kabushiki Kaisha System with approximation mechanism for recognizing graphical elements in a drawing
US5781660A (en) * 1994-07-28 1998-07-14 Seiko Epson Corporation Image processing method and apparatus
US6052480A (en) * 1995-03-06 2000-04-18 Fujitsu Limited Pattern re-recognizing table generating device and pattern recognizing device to improve a reliability for a recognition of a pattern overlapping or intersecting a line in an image
US5724072A (en) * 1995-03-13 1998-03-03 Rutgers, The State University Of New Jersey Computer-implemented method and apparatus for automatic curved labeling of point features
US5793936A (en) * 1996-09-27 1998-08-11 Texas Instruments Incorporated Center-line anti-aliasing for digital printing
US6504545B1 (en) * 1998-03-27 2003-01-07 Canon Kabushiki Kaisha Animated font characters
US6803913B1 (en) * 1999-12-01 2004-10-12 Microsoft Corporation Warping text along a curved path
US7305617B2 (en) * 2000-02-12 2007-12-04 Adobe Systems Incorporated Method for aligning text to baseline grids and to CJK character grids
US7076505B2 (en) * 2002-07-11 2006-07-11 Metrobot Llc Method, apparatus, and computer program product for providing a graphical user interface with a linear map component
US20040125108A1 (en) * 2002-12-26 2004-07-01 Mccully Nathaniel M. Coordinating grid tracking and mojikumi spacing of Japanese text
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US20090158144A1 (en) * 2004-02-27 2009-06-18 Research In Motion Limited Text input system for a mobile electronic device and methods thereof
US7787708B2 (en) * 2005-06-07 2010-08-31 Ids Scheer Aktiengesellschaft Systems and methods for rendering text within symbols
US20070211062A1 (en) * 2006-03-13 2007-09-13 International Business Machines Corporation Methods and systems for rendering complex text using glyph identifiers in a presentation data stream
US20080300053A1 (en) * 2006-09-12 2008-12-04 Brian Muller Scripted interactive screen media
US20080154911A1 (en) * 2006-12-26 2008-06-26 Dynacomware Taiwan Inc. System and method for on-line generation of asian documents with multiple font faces
US20080253656A1 (en) * 2007-04-12 2008-10-16 Samsung Electronics Co., Ltd. Method and a device for detecting graphic symbols
EP1988508A1 (en) * 2007-05-01 2008-11-05 Qualcomm Incorporated Universal rasterization of graphic primitives
US20080273028A1 (en) * 2007-05-01 2008-11-06 Guofang Jiao Universal rasterization of graphic primitives

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101887086B1 (ko) * 2017-12-15 2018-08-09 세종대학교산학협력단 무브먼트 데이터를 다방향 벡터필드에서 시각화하는 방법 및 그 장치
KR102142238B1 (ko) * 2020-02-25 2020-08-07 주식회사 엔디소프트 소정 이미지에 포함된 축약어, 손글씨, 비정형 단어 및 문장과 같은 텍스트 정보를 추출한 후 그 추출 결과를 소정 언어로 자동 번역하는 방법

Also Published As

Publication number Publication date
CN103765413A (zh) 2014-04-30
EP2727006A2 (en) 2014-05-07
JP2014521148A (ja) 2014-08-25
EP2727006A4 (en) 2014-12-10
DE202012013465U1 (de) 2017-01-30
JP5959637B2 (ja) 2016-08-02
WO2013003567A3 (en) 2013-04-11
EP2727006B1 (en) 2018-10-31
WO2013003567A2 (en) 2013-01-03
KR102001191B1 (ko) 2019-10-01
CN103765413B (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
US8917276B2 (en) Rendering a text image following a line
KR102001191B1 (ko) 라인을 따른 텍스트 이미지 렌더링
US8803901B1 (en) Map rendering using interpolation of style parameters across zoom levels
US8237745B1 (en) Label positioning technique to reduce crawling during zoom activities
US7280121B2 (en) Image processing apparatus and method of same
US9652882B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US8411113B1 (en) Layered digital image data reordering and related digital image rendering engine
US9672656B1 (en) Variable level-of-detail map rendering
US8059119B2 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
US8730258B1 (en) Anti-aliasing of straight lines within a map image
US9093006B2 (en) Image shader using style attribute references
US8760451B2 (en) Rendering a text image using texture map character center encoding with character reference encoding
US9495767B2 (en) Indexed uniform styles for stroke rendering
EP1519317B1 (en) Depth-based antialiasing
KR20170031479A (ko) 경로 스트로크를 수행하는 방법 및 장치
US20160307294A1 (en) Systems and Methods for Displaying Patterns of Recurring Graphics on Digital Maps
US9092907B2 (en) Image shader using two-tiered lookup table for implementing style attribute references
Yang et al. Efficient simplification of large vector maps rendered onto 3D landscapes
US9911205B1 (en) Visual continuity for arbitrary length stipple patterns
US20130002679A1 (en) Rendering a text image using texture map character center encoding

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant