KR20080053930A - 문서 레이아웃의 적응을 용이하게 하는 시스템과, 콘텐트를배열하는 컴퓨터 구현 방법 및 컴퓨터 구현 시스템 - Google Patents

문서 레이아웃의 적응을 용이하게 하는 시스템과, 콘텐트를배열하는 컴퓨터 구현 방법 및 컴퓨터 구현 시스템 Download PDF

Info

Publication number
KR20080053930A
KR20080053930A KR1020087008111A KR20087008111A KR20080053930A KR 20080053930 A KR20080053930 A KR 20080053930A KR 1020087008111 A KR1020087008111 A KR 1020087008111A KR 20087008111 A KR20087008111 A KR 20087008111A KR 20080053930 A KR20080053930 A KR 20080053930A
Authority
KR
South Korea
Prior art keywords
content
layout
document
template
high quality
Prior art date
Application number
KR1020087008111A
Other languages
English (en)
Inventor
에반 쉬리어
데이비드 에이치. 살레신
찰스 이. 제이콥스
제랄딘 지. 웨이드
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080053930A publication Critical patent/KR20080053930A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/114Pagination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates

Abstract

문서에서 디스플레이될 콘텐트의 유형(들) 및 디스플레이된 문서의 크기/치수가 주어졌을 때 보기 좋은 문서인 고품질 문서를 생성하는 아키텍처가 이용된다. 이 아키텍처는 매우 다양한 포맷의 매우 다양한 콘텐트를 가지고 콘텐트를 다수의 크기 및 치수에 적응시키는 레이아웃 제약들을 광범위하게 정의하는 고레벨 템플릿들을 이용할 수 있다. 또한, 고품질 문서들의 고레벨 기술은 AGDBL 시스템에서 사용되는 저레벨 제약들로 변환될 수 있어, 그 시스템에 의해 요구되는 템플릿들의 수를 극적으로 감소시킴과 동시에 템플릿들의 기능 및 그 템플릿들을 생성하고 유지하는 용이성을 증대시킨다.
AGBDL(Adaptive Grid-Based Document Layout), 문서, 콘텐트, 템플릿

Description

문서 레이아웃의 적응을 용이하게 하는 시스템과, 콘텐트를 배열하는 컴퓨터 구현 방법 및 컴퓨터 구현 시스템{MULTI-FORM DESIGN WITH HARMONIC COMPOSITION FOR DYNAMICALlY AGGREGATED DOCUMENTS}
신문 및 잡지 등의 상업용으로 인쇄된 출판물들은 격자 기반(grid-based) 페이지 레이아웃 및 디자인을 상당히 많이 이용한다. 1920년대와 1940년대에, 디자이너인 몬드리안(Mondrian)과 르 꼬르뷔제(Le Corbusier)는 각종 유형의 문서 콘텐트를 인쇄하기 위한 순서화된 격자 기반 디자인 시스템(ordered grid-based design systems)을 만들어냈다. 이들 격자 기반 디자인 시스템은 2차 세계 대전 후, 1950년대와 1960년대에, 스위스에서 더욱 개량되었고, 상업용 출판을 위한 표준으로서 전세계적으로 빠르게 확산되었다. 오늘날, 격자 기반 디자인 시스템은 각종의 출판 시스템에서 여전히 보편적으로 구현되고 있다.
격자 기반 페이지 디자인을 지원하는 몇몇 성공적인 소프트웨어 시스템이 존재한다. 워싱턴주, 레드먼드의 마이크로소프트 코오퍼레이션이 제공하는 MICROSOFT PUBLISHER, 콜로라도주, 덴버의 쿠억, 인크(Quark, Inc.)가 제공하는 QUARKEXPRESS®, 캘리포니아주, 새너제이(San Jose)의 어도비 시스템즈 인코포레이트드(Adobe Systems Incorporated)가 제공하는 ADOBE PAGEMARKER® 등의 제품들은 상업용 출판 및 데스크톱 출판을 위한 산업 표준이 되었다. 비록 이들 소프트웨어 시스템들은 그들이 의도하는 용도에 적합하기는 하지만, 텍스트, 이미지, 및 슬라이드 바 등의 페이지 요소들을 문서 레이아웃 내의 격자 위치들에 실제로 매핑하는 것은 여전히 수동 프로세스(manual process)이다. 통상적으로, 격자 기반 문서 레이아웃은 8½ × 11 인치 용지 등의 하나의 특정 페이지 크기에 대하여 개별화(customize)된다. 그러나, 이들 개별화된 레이아웃들이 페이지 크기들의 범위 및 기타 보기 조건들(viewing conditions)에 대해 우아한 방식으로 적응(즉, 여기서는 "문서-리플로우(document-reflow)"라고도 함)하는 명백한 방법은 없다.
격자 기반 문서 레이아웃은 정적인 고정 크기 및 수동 프로세스 둘 다의 원인이 되기 때문에, 격자 기반 디자인 시스템은 일반적으로 "문서-리플로우"를 지원하지 않는다. 마이크로소프트 워드 및 하이퍼텍스트 마크업 언어(HTML)와 같이, 문서 콘텐트의 리플로잉을 지원하지 않는 시스템들은 통상적으로 문서 콘텐트를 한 페이지에서 다음 페이지로 꿈틀거리며 나아가는(snake) 단 하나의 일차원 흐름으로서 간주한다. 따라서, 이러한 유형의 시스템들은 원래의 격자 기반 문서 레이아웃을 상실할 수 있다. 그러한 어려움은 상이한 폼 팩터들(form factors)을 갖는 다수의 방향(multiple orientations)을 이용하는 시스템들에서도 발생할 수 있다.
격자 기반 디자인들을 일반화하는 것의 어려움은 유사한 인쇄된 레이아웃과 비교하여 화면상 레이아웃(on-screen layouts)의 일반적으로 열등한 성질을 설명한다. 디스플레이 장치의 화면 해상도가 인쇄된 페이지의 해상도 품질과 매칭하기 시작하면서, 격자 기반 문서 디자인을 임의 크기의 전자 디스플레이에 용이하게 그 리고 자동으로 적응시킬 필요가 생긴다. "조화 구성(harmonic composition)"은 동적으로 집계된 문서들에 대한 최적의 보기(viewing) 및 읽힘성(readability)을 위해 요소들의 관계 및 비율을 유지하도록 격자 기반 시스템 내에서의 텍스트 및 이미지(이에 제한되는 것은 아님) 등의 개체들의 배치에 적용되는 규칙들 및 제약들의 세트를 정의하는 데 이용될 수 있다. 이것은 효과적인 고품질 적응 레이아웃의 개발 및 디자인에 있어서 고유한 팩터일 수 있다. 이 어려움은 아마 틀림없이 용지 상의 잉크의 읽기 경험에 필적하는 온라인 읽기 경험(on-line reading experiences)을 창출하는 데 있어서 남아 있는 가장 큰 장애들 중 하나이다. 화면상 읽기 경험(on-screen reading experience)은 결국 용지를 읽는 경험보다 나을 것이다. 그 이유는 컴퓨터들은 개별화 및 스타일에 대한 다수의 기회뿐만 아니라, 애니메이션 및 상호작용(interactivity) 등의 성능도 제공하기 때문이다.
적응 격자 기반 문서 레이아웃은 문서 콘텐트를 별개의 페이지들의 세트에 매핑하기 위해 유연성 있는 페이지네이션(flexible pagination)을 필요로 한다. 별개의 페이지들은 텍스트의 스트림에서의 낱말들의 순차적 순서화(sequential ordering), 페이지들의 한정된 용량, 및 문서 내의 콘텐트 간의 종속(예컨대, 피겨(figure) 또는 테이블에의 텍스트 참조)과 같은 다양한 제약을 받을 수 있다. 피겨 또는 테이블 등의 하나 이상의 추가 유형의 콘텐트가 수반되는 경우 종종 바람직한 페이지네이션을 찾아내는 것이 곤란하다.
최적의 페이지네이션을 획득하기 위해서는, 별개의 페이지들의 적절한 세트들 각각에 대해 성공의 측정량(a measure of success)이 정의되어야 한다. 페이지 네이션은 "최적의 하위 문제(optimal subproblem)"을 갖고 있으므로, 동적인 프로그래밍에 의해 해결 가능하다. n 페이지들의 임의의 최적의 솔루션(solution)은 본질적으로 n-1 페이지의 최적의 솔루션을 포함할 것이다. 전형적으로, 동적인 프로그래밍 페이지네이터(dynamic programming paginator)는 빈 솔루션 세트(empty solution set)에서 시작하여 점진적으로 하위 문제(예컨대, 별개의 페이지들의 서브세트)를 추가하고 해결하여 별개의 페이지들의 적절한 세트를 찾아낸다. 또한, 동적인 프로그래밍 페이지네이터는 각 하위 문제의 스코어(예컨대, 특정 메트릭(metric)에 기초한 성공의 측정량)의 테이블 및 이전의 하위 문제에의 포인터를 최적의 솔루션에 유지한다. 새로운 하위 문제는 그 새로운 하위 문제에 적당히 선행할 수 있는 최선의 스코어를 갖는 이전의 하위 문제를 찾아서 테이블을 스캔함으로써 평가(evaluate)된다. 따라서, 동적인 프로그래밍 페이지네이터는 각 새로운 하위 문제의 가능한 선행자들(predecessors) 각각을 평가한다. 유감스럽게도, 평가할 각 새로운 하위 문제의 선행자들이 상당히 많이 있을 수 있고, 대다수는 심지어 새로운 하위 문제의 유효한 선행자로서 자격이 안될 수도 있다. 그러므로, 동적인 프로그래밍 페이지네이터는 사용할 수 없는 선행자 하위 문제들의 평가를 비효율적으로 수행하고, 따라서, 페이지네이션의 속도를 저하시킨다.
더욱이, 오늘날의 컴퓨터 환경에서는 장치들 및 디스플레이들이 형태(form)와 가로 세로 비율 둘 다에서 빠르게 확장되고 있다. 콘텐트 및 정보는 소형 손목 디스플레이(tiny wrist displays), 휴대용 핸드헬드 장치, 디지털 패브릭(digita1 fabrics), 워크 스테이션 및 심지어 대형의 벽 탑재 디스플레이(large wall mounted displays) 내로 유입된다. 이러한 추세의 일환으로 퍼스널 컴퓨터는 중요한 읽기 매체로서 대두하였다. 사실상, 화면상 읽기(reading onscreen)는 오늘날 사회에서 정보를 수집하는 주요한 형태가 되었다.
그러나, 웹, 또는 극적으로 상이한 디스플레이 크기 및 형상을 갖는 이들 장치 용으로 문서를 디자인하는 현재의 방법들 중 다수는, 다수의 각종의 디스플레이들에 의해 제공되는 새로운 동적인 물적 재산(dynamic real estate)을 효율적으로 이용하지 못하고 있다. 대부분의 웹 포맷들은 다수의 디스플레이들에 걸쳐서 잘 작동하지 않는다. 이는 부분적으로 정적인 인쇄 기반 디자인 매체가 화면에 대한 읽힘성에 미치는 영향 때문이다. 정보의 대부분은 인쇄 형태로 입수 가능하고, 좋은 문서 디자인의 이점 및 중요성은 보는 사람의 주의를 끌기 때문에 인쇄 업계에서 통신, 읽힘성 및 시장성을 돕는 것으로 잘 알려져 있다. 양질의 격자 기반 디자인은 인쇄에서는 흔한 것이지만, 온라인 문서에서는 널리 보급되어 있지 않다. 따라서, 화면 크기, 비율 및 방향의 디스플레이 특성을 고려하는 새로운 다중-레벨 디자인 개념을 탐구할 필요가 있다.
인터넷은 다수의 전혀 다른 소스들로부터의 정보로부터 문서들을 모으고 그것을 단일 화면상에 함께 디스플레이하는 것을 매우 용이하게 한다. 검색 엔진들 및 뉴스 집계기들(news aggregators)이 이를 행하고 그들의 결과를 HTML 웹 페이지로서 디스플레이한다. 그러나, 대신 이들 결과를 인쇄에서 일반적으로 볼 수 있는 품질 디자인에 필적하는 잘 디자인된 매력적인 방식으로 디스플레이하는 것이 바람직할 것이다. 초기의 연구는 상이한 보기 조건에 적응하는 격자 기반 디자인들을 디스플레이하는 것을 가능케 하였지만, 그 디자인들은 반드시 상이한 콘텐트에 잘 전이(transfer)하지는 않았고 엄두도 못 낼 만큼 생성하기가 어려웠다.
따라서, 이전의 연구는 사용자들이 상이한 창 치수(window dimensions)에 적응하는 격자 기반 문서 레이아웃을 디자인하는 것을 가능케 했지만, 그 문서 레이아웃들은 작성하고 유지하기 곤란한 저레벨 언어(low level language)에서 지정되었다. 예를 들면, "스타일(style)"은 제약 기반 템플릿들(constraint-based templates) - 이들 각각은 지정된 범위의 화면 크기들에서 콘텐트의 특정 컬렉션을 디스플레이할 수 있음 - 의 컬렉션이 되도록 디자인될 수 있다. 문서 창이 크기 조정(resize)되었을 때, 템플릿의 제약 시스템은 임계값(threshold) - 이 지점에서 또 다른 템플릿이 이용됨 - 과 교차할 때까지 각 디스플레이 요소를 크기 조정한다. 그러나, 이전 시스템들의 목적은 문서 스타일들이 다수의 문서들에 재사용 가능하게 하는 것이었다. 이것은 어느 정도까지 정당했지만, 실제로는 만일 피겨 치수가 원래의 디자인에서 사용된 것들과 현저히 다르다면 다수의 레이아웃들이 보기 좋지 않을 것임이 밝혀졌다. 시각적 요소들의 어떤 조합이라도 취급할 수 있는 견실한 스타일을 디자인하는 것은 요소들 및 요소 변이들(element variations)의 가능한 조합마다 하나씩 막대한 수의 템플릿들이 디자인되는 것을 필요로 하였다.
따라서, 이전의 적응 문서 시스템은 디자이너들이 상이한 화면 크기 및 포맷에 적응하는 문서들을 구축하는 것을 가능케 했지만, 2가지 중요한 문제들로 곤란을 겪었다. 첫째, 새로운 디자인을 생성하고 또한 기존의 디자인을 수정하기 위해 실제 문서 레이아웃에서 작용하는 것은 매우 어려웠다. 둘째, 문서 레이아웃들은 출판 전에 디자이너들 또는 에디터들에 의해 수정되지 않고 콘텐트의 전혀 다른 부분들에 매우 잘 적응하지 못했다.
인쇄 매체에서의 레이아웃들은 레이아웃과 콘텐트 둘 다를 변경함으로써 최종 결과물을 개별화하는 디자이너들 및 에디터들의 이점을 갖고 있다. 단일의 정적인 디자인 템플릿은 페이지 상의 디자인 요소들의 대부분은 동일할 수 있더라도 제목(titles) 또는 표제(headlines)가 길이가 다르고 그래픽이 치수가 다른 경우 상이한 유형들의 콘텐트에 대하여 매우 보기 좋을 것 같지는 않다. 이러한 특성의 다중-레벨 디자인에서의 주요 과제들 중 하나는 품질 레이아웃을 유지하는 것이고, 레이아웃 내의 모든 것을 좋게 보이기 만들고 필요할 경우 개별화하는 에디터는 없고, 디자인들은 콘텐트를 디스플레이하는 다수의 방법들을 수용하고 언제라도 어느 방법이 최선인지를 구별할 수 있어야 한다.
<발명의 요약>
다음은 청구된 내용의 일부 양태들에 대한 기본적인 이해를 제공하기 위하여 청구된 내용의 단순화된 요약을 제공한다. 이 요약은 본 발명의 광범위한 개관은 아니다. 그것은 발명의 중요한/필수적인 요소들을 식별하거나, 발명의 범위를 기술하기 위한 것이 아니다. 이 요약의 유일한 목적은 뒤에 제공되는 보다 상세한 설명의 서론으로서 청구된 내용의 일부 개념들을 단순화된 형태로 제공하기 위한 것이다.
여기에 개시되고 청구된 내용은, 그 일 양태에서, 다수의 상이한 보기 조건들 및 콘텐트 선택들에 적응하는 풍부한, 격자 기반 디자인 및/또는 고품질 레이아 웃을 쉽게 디자인하고 디스플레이하는 것을 용이하게 할 수 있는 아키텍처를 포함한다. 전술한 것을 달성하기 위해, 레이아웃의 제약들을 고레벨(high level)로 기술하는 템플릿들이 이용될 수 있다. 이들 템플릿들은 생성하고 유지하기가 훨씬 쉬우면서도, 레이아웃들의 유연성을 증가시켜, 레이아웃들이 전혀 다른 콘텐트에 보다 잘 적응하게 한다. 더욱이, 특히 인터넷 상의 각종의 소스들로부터 집계된 콘텐트에 집중하여, 디스플레이될 수 있는 콘텐트의 유형들을 확장함으로써 이전에 시스템들에 걸쳐서 아키텍처의 응용성이 증가될 수 있다(예컨대, 2003년, 제이콥스(Jacobs) 등의 "Adaptive Grid-Based Document Layout"(AGBDL)).
청구된 내용의 일 양태에 따르면, 이해하고 사용하기 쉬운 고레벨 구성을 갖는 템플릿들이 정의될 수 있다. 따라서, 템플릿들을 디자인하고 및/또는 유지하는 작업은 광범위한 기술적 배경을 갖고 있지 않을 수 있는 그래픽 디자이너들에게 실용적일 수 있다. 또한, 결과의 디자인들은 다른 디자이너들, 심지어 템플릿을 작성하는 데 도움을 주지 않은 이들에 의해서도 쉽게 이해 가능하고 유지 가능할 수 있다. 작성된 템플릿들은 각종의 웹 기반 소스들로부터 획득된 정적 문서들 및 동적 문서들 둘 다에서 이용될 수 있다. 템플릿들은, 예를 들어, 다수의 계층의 콘텐트를 갖는 문서들을 생성할 수 있는 다중-레벨 디자인 레이아웃을 위해서도 이용될 수 있다.
다른 양태에 따르면, 결과의 문서 레이아웃들은 고품질 레이아웃들(예컨대, "보기 좋은" 레이아웃들)일 수 있고, 전혀 다른 유형들의 콘텐트를 이용하는 동안 상이한 디스플레이 크기에서 그들의 시각적 매력을 보유할 수 있다. 고품질 레이 아웃들은 의미 흐름(semantic flow), 브랜드 ID(identity), 이미지 및 텍스트 상관(correlation), 광고 테마(advertising themes) 등을 손상하지 않도록 디자인될 수 있다.
청구된 내용의 또 다른 양태에 따르면, 다수의 템플릿들이 디자인되고 유지될 필요 없이 집계된 문서에서 발견될 수 있는 매우 다양한 콘텐트를 핸들링하기에 족할 만큼 유연성이 있을 수 있다. 오히려, 단 하나의 템플릿이 요소들 및/또는 콘텐트의 다수의 가능한 구성들을 정의할 수 있어, 유연성 있는 디자인들을 제공하는 데 필요한 템플릿들의 수를 대폭 감소시킬 수 있다. 더욱이, 고레벨로 기술된 템플릿들은 다른 시스템들에 의해 이용되는 저레벨 제약들로 변환될 수 있다. 이 아키텍처는 적응 문서들에서 공통의 거동(behaviors)을 구현하는 제약 시스템들(constraint systems)을 자동으로 제공할 수 있어, 각 디자이너가 그것들을 손수 코딩할 필요가 없다.
또한, 이 아키텍처는, 디스플레이될 정확한 콘텐트가 알려지지 않은 경우에도, 그래픽 디자이너들이 상이한 화면 크기들에 적응하는 고품질 문서 레이아웃들을 쉽게 디자인하게 할 수 있다. 또한, 문서의 개념은 균일한 포맷(uniform format)으로 되어 있지 않을 가능성이 있는 외부 소스들에의 참조들을 포함하도록 확장될 수 있다. 따라서, 이 아키텍처는 다수의 소스들로부터 집계되고, 디자인 시에 알려지지 않을 수 있는 콘텐트를 핸들링하는 충분한 유연성을 가지고 고품질, 격자 기반 적응 디자인들에 기초한 다중-레벨 디자인 아키텍처를 생성하는 것을 용이하게 할 수 있다.
전술한 그리고 관련된 목적들을 달성하기 위해, 본 명세서에서는 청구된 내용의 특정 예시적인 양태들을 다음의 설명 및 첨부 도면들과 관련하여 설명한다. 그러나, 이들 양태들은 본 발명의 원리들이 이용될 수 있는 다양한 방법들 중 소수를 나타낼 뿐이고 청구된 내용은 모든 그러한 양태들 및 그들의 균등물들을 포함하도록 의도되어 있다. 본 발명의 다른 이점들 및 신규한 특징들은 본 발명에 대한 다음의 상세한 설명을 도면들과 관련하여 참작할 때 명백해질 것이다.
도 1은 매우 다양한 콘텐트를 가지고 다수의 크기 및 치수에서 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템을 예시한다.
도 2는 템플릿의 생성, 수정 및/또는 저장을 용이하게 하는 시스템의 블록도를 예시한다.
도 3은 의미 흐름, 브랜드 ID(identity), 이미지 및 텍스트 상관, 및/또는 광고 테마(advertising themes)에 적어도 부분적으로 기초하여 고품질 레이아웃을 생성하는 레이아웃 엔진을 예시한다.
도 4는 출력 장치의 치수에 기초하여 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템을 예시한다.
도 5는 고레벨 구성(high level constructs)으로 특정된 템플릿에 기초하여 고품질 레이아웃을 생성하고, 그 레이아웃을 저레벨 엔진이 고품질 레이아웃을 생성하기 위해 이용할 수 있는 저레벨 제약(low level constraints)으로 변환하는 시스템을 예시한다.
도 6은 템플릿을 선택하고 고품질 레이아웃을 생성하기 위하여 레이아웃 상에 콘텐트를 배열하는 시스템을 예시한다.
도 7은 소스 포맷으로부터 변환하기 위해 XSLT(Extensible Stylesheet Language Transformation)를 이용하는 레이아웃 엔진을 예시한다.
도 8은 고품질 레이아웃을 생성하기 위해 콘텐트를 배열하는 것을 용이하게 하는 절차들의 예시적인 순서도를 예시한다.
도 9는 적응 격자 기반 문서 레이아웃 환경의 블록도 표현을 디스플레이한다.
도 10은 본 발명이 이용할 수 있는 컴퓨팅 환경 및 그 컴퓨터 시스템들의 블록도 표현을 디스플레이한다.
도 11은 적응 레이아웃 스타일들 및 템플릿들을 포함하는 문서 레이아웃의 블록도 표현을 디스플레이한다.
도 12는 적응 템플릿의 블록도 표현을 디스플레이한다.
도 13은 콘텐트 스트림들을 포함하는 문서 콘텐트의 블록도 표현을 디스플레이한다.
도 14는 콘텐트 항목들(content items)을 포함하는 콘텐트 스트림의 블록도 표현을 디스플레이한다.
도 15A-15B는 문서 콘텐트를 템플릿들에 적용하는 방법의 순서도 표현을 디스플레이한다.
도 16A-16C는 콘텐트를 문서 레이아웃 내의 요소들 내로 유입하는 방법의 순 서도 표현을 디스플레이한다.
도 17A-17C는 문서 레이아웃 내의 요소들을 셀프-사이징(self-sizing)하는 방법의 순서도 표현들을 디스플레이한다.
도 18은 문서 콘텐트가 템플릿에 얼마나 잘 맞는지에 기초하여 템플릿의 스코어를 매기는(scoring) 방법의 순서도 표현을 디스플레이한다.
도 19A-19D는 문서 콘텐트를 적응 격자 기반 문서 레이아웃으로 최적으로 페이지네이트(paginating)하는 방법의 순서도 표현을 디스플레이한다.
도 20은 예시적인 컴퓨팅 환경의 개략 블록도를 예시한다.
이제 도면들을 참조하여 청구된 내용을 설명하는데, 도면들 전체에 걸쳐서 유사한 요소들을 나타내기 위해 유사한 참조 번호가 이용된다. 이하의 설명에서는, 설명을 목적으로, 본 발명의 철저한 이해를 제공하기 위하여 다수의 특정 상세들이 제시된다. 그러나, 청구된 내용은 이들 특정 상세 없이 실시될 수도 있다는 것은 분명할 것이다. 그 밖의 경우에, 청구된 내용의 설명을 용이하게 하기 위하여 잘 알려진 구조들 및 장치들은 블록도 형태로 도시된다.
이 명세서에서 사용될 때, "컴포넌트" 및 "시스템"이라는 용어들은, 하드웨어든, 하드웨어와 소프트웨어의 조합이든, 소프트웨어든, 실행 중인 소프트웨어든, 컴퓨터 관련 엔티티(computer-related entity)를 가리키도록 의도되어 있다. 예를 들면, 컴포넌트는 프로세서 상에서 실행 중인 프로세스, 프로세서, 개체, 실행 파일, 실행 스레드(thread of execution), 프로그램, 및/또는 컴퓨터일 수 있지만, 이에 한정되는 것은 아니다. 예시로서, 서버에서 실행 중인 애플리케이션 및 그 서버 둘 다 컴포넌트일 수 있다. 하나 이상의 컴포넌트들이 프로세스 및/또는 실행 스레드 내에 존재할 수 있고 컴포넌트는 하나의 컴퓨터에 집중(localize)될 수도 있고 및/또는 2 이상의 컴퓨터들 사이에 분산될 수도 있다.
이 출원에서 사용될 때, "디자인" 또는 "레이아웃"이라는 용어들은 일반적으로 콘텐트가 문서 내에 어떻게 배열되는지를 가리킨다. 여기에서 사용될 때 디자인 및 레이아웃은 실질적으로 교환 가능하다. 예를 들면, 문서 디자인 및 문서 레이아웃 둘 다 콘텐트가 문서 내에 어떻게 배열되는지를 가리킨다.
이 출원에서 사용될 때, "고레벨(high level)"이라는 문구는 일반적으로 저레벨 언어 또는 구성(low level languages and constructs)보다 더 사용자 친화적이고, 어느 정도까지 플랫폼-독립적(platform-independent)일 수 있는 프로그래밍 언어 또는 프로그래밍 구성을 가리킨다. 고레벨 구성은 동작들을 구현하는 데 필요한 복잡성을 피하기 위해 저레벨 동작들에 대한 추상화(abstractions)를 제공할 수 있다. 일반적으로, 어셈블리 언어는 물론, 순수한 HTML(Hyper Text Markup Language) 및 기타 "느슨한(loose)" 코딩 포맷들은 저레벨인 것으로 간주되는 반면, XSLT(Extensible Stylesheet Language Transformation)을 적용한 후의 출력 포맷은 고레벨인 것으로 간주된다.
여기에서 사용될 때, "고품질(high quality)"이라는 용어는 현재의 디스플레이 치수 및 현재의 콘텐트가 주어진 경우 결과의 출력이 보기 좋은 것으로 판정된다는 것을 의미한다. 고품질은 레이아웃 또는 디자인 또는 특정 콘텐트가 삽입될 레이아웃 내의 특정 위치를 가리킬 수 있다. 예를 들면, 고품질 레이아웃은 현재의 콘텐트를 가지고 현재의 디스플레이 치수에서 좋게 보이는 것으로 결정되는 것인 반면 고품질 위치는 전체 레이아웃 또는 디자인의 고품질 문자를 유지하면서 특정 콘텐트가 도입될 수 있는 위치이다. 레이아웃 또는 위치의 고품질 문자는, 의미 흐름, 브랜드 ID, 이미지 및 텍스트 상관, 광고 테마 등과 같은, 추가 조건들도 만족시키는 것을 필요로 할 수도 있다는 것을 이해해야 할 것이다. 또한 이들 추가 조건들은 비직사각형(non-rectangular) 템플릿들 및 요소들, 열 균형(column balancing), 쪼갤 수 없는 단락(unbreakable paragraphs) 및 원자 하위-문서(atomic sub-document), 및 상호 작용(interactivity) 등, 아래에서 설명되는 고려 사항들에 기초할 수 있다는 것을 이해해야 할 것이다.
여기에서 설명된 실시예들은 웹 기반의 집계된 데이터의 적응 디스플레이를 위한 시스템, 및 적응 격자 기반 문서 레이아웃 시스템(Adaptive Grid-Based Document Layout system)에 대한 템플릿 개선에 관한 것이다. 상이한 디스플레이 크기들에 자동으로 적응할 수 있는 광범위한 고품질 시각적 포맷으로 데이터가 디스플레이되게 하는, 인터넷 콘텐트를 집계하고 그것을 적응 격자 기반 문서 레이아웃(AGBDL)을 이용하여 디스플레이하기 위한 시스템이 제공된다. 이 시스템은 RSS 뉴스 피드(news feeds), 인터넷 검색 엔진 결과, MSN 뉴스봇(Newsbot)과 같은 인터넷 뉴스 집계기 백엔드(internet news aggregator back-ends), 및 신문과 잡지 등의 콘텐트 웹사이트(content web-sites)로부터 직접 "스크랩된(scraped)" 콘텐트를 포함하지만 이에 한정되지 않는 다수의 콘텐트 소스들 중 어떤 것이라도 사용할 수 있다. 이것은 또한 아래에 설명된 원래의 AGBDL 작업에서 설명된 것과 같은, 문서의 개념을 확장함으로써 행해질 수 있다.
본 아키텍처는 다수의 개별 문서들로 이루어지고 부모-문서들 및 포함된 하위-문서들의 다중-레벨 계층 구조(multi-level hierarchy)로 배열될 수 있는 문서들을 지원할 수 있다. 각 컴포넌트 문서는 각 개개의 소스에 대하여 특정될 수 있는 XSLT 변환을 통하여, 또는 웹-스크래퍼 또는 어떤 다른 데이터 수집 또는 처리 에이전트일 수 있는 도우미 프로그램을 통하여, 로드 시에 시스템의 원시 문서(native document)로 변환될 수 있는 외부 및 원시 소스들의 조합으로 구성될 수 있다. 외부 소스들은 문서 내의 다수의 레벨들에서 특정될 수 있다. 외부 소스는 전체 문서(최상위-레벨 또는 하위-문서)로서, 문서 내의 특정 콘텐트 스트림으로서, 또는 특정 콘텐트 스트림 내의 단일 콘텐트 항목으로서 로드될 수 있다. 또한, 외부 소스는 전적으로 또는 부분적으로 문서에 포함될 수 있다. 이를테면, 변환 후 주어진 소스로부터 단일 콘텐트 스트림이 선택적으로 로드될 수 있다.
이를 지원하여, 문서 스키마는 AGBDL 문서가 위에 설명된 방법들로 외부 소스들을 참조하게 하도록 확장되었다. 문서가 구문 분석되어 로드될 때, 특정된 임의의 하위-문서들 또는 기타 외부 콘텐트는 변환되고(필요할 경우) 그 후 재귀적으로 구문 분석되어 로드될 수도 있다. 하위-문서들(sub-documents)은 동봉 문서(enclosing document)에서 하위-템플릿들로서 이용되는 그들 자신의 디스플레이 템플릿들의 세트를 참조하여, 그들 스스로 완전한 AGBDL 문서들로서 정의된다. 디스플레이 시에, 하위-문서에 그 문서가 렌더링되어야 하는 화면 영역이 전달된다. 하위-문서는 재귀적으로 페이지네이트할 수 있고 그 후 마치 그것이 주어진 창에서 최상위-레벨 문서인 것처럼 주어진 영역에 그 자신을 배열한다. 하위-문서는 동봉 문서에서 데이터로서 로드되는 다른 외부 콘텐트와는 다를 수 있는데, 그 이유는 후자는 임의의 다른 콘텐트처럼 부모 문서의 템플릿들을 이용하여 부모 문서 내에 디스플레이될 수 있기 때문이다.
(후술되는) AGBDL 시스템에서의 적응 템플릿들에 관해서는, 다음과 관련하여 확장들이 제공된다: 고레벨 템플릿 디자인, 확장된 템플릿 적응성(콘텐트에 적응하는 템플릿들), 및 템플릿 매개 변수들 및 출력들. 이들 3개의 카테고리들 모두는 "문서 스타일들"의 작성(authoring) 및 유지를 용이하게 할 수 있다. 스타일들은 문서가 렌더링될 수 있는 레이아웃들의 범위를 함께 커버하는 템플릿들의 컬렉션으로서 정의될 수 있다.
고레벨 템플릿 디자인은 각 디스플레이 요소의 치수 및 위치는 물론, 요소의 디스플레이 특징(feature)들, 다른 디스플레이 요소들에의 관계, 및 적응 거동들(adaptive behaviors)을 제어하는 개개의 제약들을 포함하는, 저레벨 상세를 생성하도록 시스템에 의해 해석되는 고레벨 제약들을 이용하여 제약-기반 템플릿들(constraint-based templates)이 특정되게 할 수 있다.
AGBDL 시스템에서와 같이, 종래에는, 템플릿들은 각 템플릿에서 나타나는 각 디스플레이 요소, 제약, 및 특성을 기술한 XML 코드를 작성함으로써 특정될 필요가 있었다. 템플릿 작성 도구(template authoring tool)로 인해 GUI 인터페이스를 통하여 템플릿들을 작성하고 수정하는 것이 아마도 틀림없이 더욱 용이해졌지만, 작성자는 여전히 이 다른 방법을 통하여 동일한 상세의 전부를 특정할 필요가 있었다.
본 혁신은 적응 열 격자(adaptive column grids) 및 요소들 간의 상대적 관계와 같은 고레벨 구성들을 이용하여 문서 특정(document specification)을 가능케 할 수 있다. 열 격자는 비례 및 절대 열 폭(proportional and absolute column widths)의 조합을 이용하여 정의될 수 있고, 임의의 주어진 페이지 폭에서 어느 열들이 인스턴스화되는지를 제어하는 규칙들이 특정될 수 있다. 그 후 디스플레이 요소들은 하나 이상의 이들 열 및 이들 열들의 일부에 걸쳐서 배치될 수 있고, 그 후 그것은 예를 들어 "오버(over)" 및 "언더(under)" 할당들을 통하여 다른 요소들에 관련될 수 있다. 단일 문(statement)은 로드 시에 그로부터 다수의 저레벨 제약들이 자동으로 생성되는 매개 변수들의 컬렉션을 특정 또는 암시할 수 있다. 추가 제약들을 생성하는 데 이용되는 여백(margins) 및 패딩과 같은 요소들의 특성들을 확립하는 다른 매개 변수들이 특정될 수 있다.
문서들 또는 페이지들은 종종 다수의 매개 변수 값들을 공유하는, 텍스트의 다수의 행들과 같은, 유사한 디스플레이 요소들의 컬렉션들을 포함한다. 청구된 내용의 양태들은 한 요소가 한 번 기술된 후에 여러 번 인스턴스화되게 할 수 있다. 각 인스턴스는 그것의 위치 정보와 같이, 그것의 상세들 중 일부(subset)가 무효화(override)될 수 있다. 또한, 기술 언어는 특정 요소에 관한 모든 제약들이 그 요소 기술에 포함될 수 있도록 재편성되어, 사용자가 템플릿을 이해하고 유지하는 것이 더 용이해진다.
확장된 템플릿 적응성은 각 개개의 템플릿들이 보다 광범위한 디스플레이 치수 및 문서 콘텐트를 커버하게 할 수 있다. 이전에는, 각 템플릿은 고정된 세트의 디스플레이 요소들을 가져서, 특정 세트의 콘텐트를 요구하였고, 요소들은 제약 시스템을 통하여 어떤 범위의 페이지 치수들을 커버하도록 적응될 것이다. 페이지 상의 피겨들(figures)의 수와 같은 각 상이한 콘텐트 분류는 상이한 템플릿을 요구할 것이다. 가로 가로 세로 비율(landscape aspect ratio)을 갖는 피겨는 세로 가로 세로 비율(portrait aspect ratio)을 갖는 피겨와는 다른 템플릿을 이용할 것이다. 잠재적으로 상이한 가로 세로 비율들 또는 해상도들을 갖는 다수의 피겨들을 한 페이지에서 처리하려면 콘텐트 스트림들에서 다양한 순서로 나타나는 피겨 유형들의 가능한 조합들을 처리하기 위해 필요로 하는 템플릿들의 수를 증가시킬 필요가 있을 것이다. 단일 템플릿은 또한 원래의 시스템에서 고정된 수의 열들을 가질 것이고, 페이지가 가질 수 있는 열들의 각 수에 대하여 피겨 유형들의 가능한 순열들 전부를 처리하는 새로운 템플릿들을 필요로 할 것이다. 유연성 있는 "스타일"을 위해 필요한 템플릿들의 총 수는 템플릿이 채택하는 가능한 치수들이 증가함에 따라서 기하급수적으로 커져서, 폭 넓게 적용 가능한 스타일의 생성을 성가시게 하고 그것의 유지를 매우 어렵게 만들었다.
본 템플릿 정의는 이들 문제들을 다루는 다수의 새로운 특징들을 갖는다. 옵션인 요소들은 상이한 콘텐트 선택들이 단일 템플릿에 의해 처리되게 할 수 있다. 요소들은 템플릿이 이용될 때마다 그 템플릿이 가능한 선택들의 세트로부터 하나의 요소만을 인스턴스화하게 할 수 있는 "Or" 그룹들로 조합될 수 있다. Or 그룹들은 최적 적합(best-fit), 최초 적합(first-fit), 최초 양호 적합(first-good-fit) 및 유사한 알고리즘들을 포함하여, 주어진 레이아웃에서 어느 요소를 선택할지를 결정하기 위한 수 개의 알고리즘들 중 하나를 이용할 수 있다.
또한, 새로운 템플릿들은 이제 가변 수의 열들을 가질 수 있다. 위에서 설명된 열 정의는 특정 페이지 임계값들에 기초하여 적응 열들의 포함을 위한 규칙들을 포함할 수 있고 또는 임계값들은 최대 열 폭에 기초하여 아키텍처의 컴포넌트들에 의해 계산될 수 있다. 특정 페이지 크기에서 어느 열들이 인스턴스화되는지를 제어하는 열 우선 순위(column priorities)가 특정될 수 있다. 특정 페이지 폭에서 사용되지 않는 열들은 그것들을 스팬(span)하는 요소들이 그 페이지 크기에서 폭이 감소되거나 또는 완전히 제거되도록 제약 시스템에 의해 제로 폭으로 붕괴될 수 있다. 동시에, 옵션인 요소들 및 적응 열 격자들은 템플릿들의 수 및 관련된 유지를 극적으로 감소시킬 수 있다.
템플릿 시스템의 또 다른 확장은 부모 템플릿들과 그들 안에 배치된 하위-템플릿들 사이에 매개 변수들이 전후로 전달되게 할 수 있다. 매개 변수들 및 반환 값들은 수신측 템플릿의 제약 캐시(constraint cache)에 배치될 수 있고 따라서 그것들은 임의의 다른 제약 값과 같이 요소들에 의해 참조될 수 있다. 이들 매개 변수들은, 예를 들면, 하위-템플릿 내의 열들의 수를 설정하거나, 옵션인 요소들의 포함 또는 배제를 플래그(flag)하거나, 자식(child)에서 피겨들이 디스플레이되는 방식을 제어하는 데 이용될 수 있다. 하위-템플릿에 전달된 매개 변수들은 즉시 값들(immediate values)일 수도 있고 또는 호출 시에 평가될 수 있는 부모 템플릿의 시스템에서의 제약들일 수도 있다.
또한, 스타일-시트(style-sheet)가 매개 변수로서 하위-템플릿에 전달될 수 있고 따라서 부모 문서가 자식에서 사용되는 타입설정 상세(typesetting details) 중 다수를 직접 제어할 수 있다. 반환 매개 변수들은, 피겨의 상부 또는 하부가 어디에 위치하는지, 또는 표제 또는 제목이 어디에서 끝나는지와 같은, 자식의 레이아웃의 숨겨진 상세들을 부모 템플릿에 알려줄 수 있다. 그 후 부모는 하위-템플릿 내의 특징들(features)에 다른 디스플레이 요소를 정렬시키거나 또는 개별 하위-템플릿들 내의 2개의 관련 없는 피겨들이 나란히 배치되지 않도록 할 수 있다.
숙련된 당업자라면 이해하겠지만, 특히 상술한 바와 같은 계층적 복합 문서들을 디스플레이하기 위한, 템플릿들의 능력에 추가되는 다른 개선들이 있다. 이를테면, "And" 그룹들은 요소들의 컬렉션이 단일 콘텐트 원자(single content atom)로부터 소비하게 하여 문서들을 레이아웃하고 조직하는 데 보다 큰 유연성을 허용한다. 이것은, 예를 들면, 피처 사진(feature photograph)이 개개의 뉴스 스토리로부터 추출되어 스토리의 나머지와는 별개의 요소에서 신문의 제1면에 디스플레이되게 할 수 있다. 다른 특징은 호스팅 요소의 GDI(Graphical Display Interface) 영역을, 이전의 시스템들에 의해 전달된 직사각형 경계 박스보다는, 그 요소에서 사용되는 하위-템플릿에 전달할 수 있다. 이러한 양태는 하위-템플릿이 그것의 텍스트를 부모 템플릿 내의 겹치는 요소들 주위에 흐르게 하거나 그림을 디스플레이하기 위해 OR 그룹으로부터 폐색(occlude)되지 않은 요소들을 선택하게 할 수 있다.
위에 설명한 바와 같이, 다른 실시예들은 고정 크기 선택들의 컬렉션을 포함하여, 각 열에 대하여 원하는 크기의 특정 범위와 같은, 열 격자의 원하는 거동을 기술하기 위한 보다 강력한 방법들을 용이하게 하는 템플릿 사양에 대한 고레벨 구성들을 제공할 수 있다. 또한, 예를 들어 자동 생성된 여백들을 이용하여, 오버-제약되거나(over-constrained) 언더-제약된(under-constrained) 상황들을 해결하기 위해 우선 순위가 특정될 수 있다. 실시예들은 열들과 유사하지만 상이한 규칙들을 따르는 자동-생성된 수직 격자들, 및 개개의 격자-열들을 나누는 적응 하위-격자들(adaptive sub-grids), 및 추가 상위-레벨 격자들을 지원하여, 상이한 격자들에 의해 제어되는 상이한 요소들의 컬렉션들을 갖는 레이아웃들을 허용할 수 있다. 개개의 요소들은 여러 번 인스턴스화될 수 있고 모두가 여러 번 함께 인스턴스화될 수 있는 요소들의 그룹을 구축할 수 있는 것이 구상된다.
옵션인 요소들(및 요소들의 OR 그룹들)에 직면하여 일관된 제약 시스템을 특정하는 것은 매우 복잡하고 교묘해질 수 있고, 또한 원하는 결과에 대한 설명이 주어진 상황에서 정확한 시스템을 만들어내어 그것을 자동으로 템플릿 내에 구축하는 구성들을 개발하는 것도 고려된다.
또한, 최종 사용자들이 콘텐트를 볼 때 개개의 디스플레이 요소들을 크기 조정(resize)하거나, 요소에 새로운 데이터를 추가하는 것은 물론, 적응-열-카운트 거동(adaptive-column-count behavior)을 확장하여 보다 정교한 방법들을 이용하여 제공된 콘텐트에 기초하여, 주어진 크기에서 어느 열들을 포함시킬지를 선택하게 할 수 있다. 이것은 열들의 각 가능한 선택을 렌더링하고 레이아웃 스코어에 기초하여 최적의 것을 선택하는 것을 수반할 수 있다.
위에서 간략히 설명한 바와 같이, 일 양태에 따르면, 청구된 내용은 이전의 AGBDL 문서 시스템을 3가지 일반적인 방법으로 확장할 수 있다. 첫째로, 템플릿 시스템이 개선되어, 템플릿들을 보다 강력하게 만들고 한층 더 넓은 범위의 콘텐트를 커버하기 위해 훨씬 적은 수의 템플릿들을 필요로 하고, 동시에 템플릿들을 작성하고 유지하기 더 쉽게 만들었다. 또한, 문서 정의는 문서가 다수의 위치로부터 콘텐트를 수집하게 하고 개개의 문서들이 부모 및 자식 문서들의 계층 구조들 내로 모아지도록 확장되었다. 마지막으로, 레이아웃 엔진(예컨대, AGBDL 시스템 내의 저레벨 엔진)은 종종 새로운 도메인들에 특정한 새로운 특징들에 대한 지원을 제공하도록 업데이트되었다. 이하에서는 청구된 내용의 이들 확장 및 그 밖의 양태들에 대하여 설명한다.
템플릿
템플릿들의 주요 양태는 3가지가 있다. 첫째, 템플릿들은 고레벨 언어를 이용하여 특정될 수 있어 템플릿들을 작성하고, 이해하고, 유지하는 것이 더욱 쉬워질 수 있다. 둘째, 템플릿들은 모든 각각의 가능한 변형, 및 단일 레이아웃의 콘텐트의 변형들의 조합에 대하여 개별 템플릿들을 필요로 하기보다는, 이용 가능한 콘텐트에 대해 적응 가능할 수 있다. 셋째, 템플릿들은 보다 큰 범위의 화면 치수들에 걸쳐서 확장하는 능력을 가질 수 있어서 작성되고 유지되어야 하는 유사한 템플릿들의 수가 감소될 수 있다.
AGBDL 시스템에서의 템플릿들은 매우 저레벨의 언어로 작성되었기 때문에 작성하고 유지하기가 매우 어려웠다. 각각의 개별 제약이 명시적으로 특정되었고 페이지 상의 모든 각 요소에 대하여 다수의 제약이 요구되었다. 가변 수의 열들과 같은 정교한 적응을 위한 제약 시스템들은 작성하기가 엄청나게 어려웠고, 다른 작성자의 템플릿들을 해독하는 것도 어려웠다. 템플릿 디자인 도구는 템플릿 디자인을 위한 GUI를 제공하였지만, 그것은 대개는 저레벨 지원만을 제공하였고, 여전히 대부분의 제약들이 독립적으로 설정될 필요가 있었다. 더욱이, 그것의 출력은 이해하고 편집하기가 매우 어려워서, 도구의 능력을 넘어서 디자인을 개별화하기가 어려웠다.
일 실시예에 따르면, 청구된 내용은 고레벨 구성들의 본래의 강점에 편승하여, 템플릿 언어 자체에 보다 강력한 구축 블록들(building blocks)을 포함하는, 템플릿들을 이용한다. 새로운 언어 내의 고레벨 프리미티브들은 템플릿이 시스템에 의해 로드될 때 기본 구조들로 컴파일될 수 있고, 또는 그것들은 업데이트된 레이아웃 엔진에 의해 직접 판독될 수 있다. 제약 시스템의 많은 부분들이 새로운 프리미티브들로부터 추론될 수 있고 자동으로 생성된다. 이 시스템은 또한 잘 알려진 유용한 작업들을 위한 복잡한 제약 시스템들을 자동으로 생성할 수 있다.
고레벨 템플릿 기술
원래의 AGBDL 시스템과 청구된 내용 둘 다는 XML(Extensible Markup Language) 문서들로서 템플릿들을 정의할 수 있다. 원래의 시스템에서는 템플릿 기술은 섹션들로 조직되었다. 모든 요소들은 부모 <element> 내의 <element> 노드들에 의해 기술되었고, 모든 제약들은 부모 <constraints> 노드 내의 <constraint> 노드들에 의해 기술되었다. 고레벨 템플릿들은 2개의 섹션들을 보유할 수 있고, 또한 작성자가 대안으로 임의의 요소 노드의 내부에 제약을 정의하게 할 수도 있다. 이러한 유연성은 템플릿이 특정 요소를 그 요소로 직접 기술하는 제약들을 그룹화하고, 전역 제약들(global constraints)을 일반 섹션에 배치하게 할 수 있다.
작성자들에게 각 제약을 개별적으로 특정하도록 요구하기보다는, 부모에 적용되는 몇몇 개별 제약들을 묵시적으로 정의하기 위해 요소 노드들 아래에 배치될 수 있는 다수의 자식 노드들이 정의될 수 있다. 이를테면, 아래 예에 도시된 특성(attribute)들 중 일부를 포함하는 단일 노드들을 갖는 요소에 대하여 여백들(margins) 및 패딩(padding)이 특정될 수 있다:
Figure 112008024340016-PCT00001
특정 할당들은 전형적으로 항상 보다 일반적인 것들을 무효화할 것이다. 특성에 의해 정의되지 않은 어떤 값이든 제로로 추정될 수 있다. 작성자는 즉시 값들에 또는 다른 제약들을 참조하는 식들에 특성들을 할당할 수 있다. 요소의 크기 및 배치를 제어하는 제약들은, 다시 가능한 특성들의 서브세트를 이용하여, 단일 위치 노드로 특정될 수 있다. 만일 그 위치 노드를 구문 분석한 후에 노드가 언더-제약되면(under-constrained), 통상적으로 오류가 발생된다.
다음의 예에 예시된 바와 같이, "오버(over)" 및 "언더(under)" 특성들은 다른 요소들의 위치에 기초하여 요소들을 할당하기 위해 이용될 수 있다. 예를 들면, "오버" 특성은 현 요소(current element)의 상부를 명명된 요소(named element)의 하부와 정렬시키고, "언더" 특성은 그 요소의 하부를 명명된 요소의 상부와 정렬시킨다.
Figure 112008024340016-PCT00002
Figure 112008024340016-PCT00003
문서를 코오스한 격자의 열들(coarse grid of columns)로 나누는 것은 일반적이다. 문서의 폭이 변할 때 대부분의 열들이 적응하기 위해 이용할 있음직한 거동은 조금밖에 없다. 예를 들면, 열들은 페이지가 넓어질 때 모두 동등하게 증대될 있고, 페이지가 좁아질 때 동등하게 축소될 수 있다. 열들은 또한 어떤 고정된 비율에 따라서 증대되고 축소될 수도 있다. 대안적으로 또는 부가적으로, 일부 열들은 다른 열들이 크기 조정되는 동안 고정된 폭으로 유지될 수도 있고 또는 여분의 폭이 그 열들 주위의 제본용 여백(gutters) 및 여백(margins) 내로 흡수될 수도 있다. 템플릿 언어는 위에 열거된 거동들, 또는 다른 있음직한 또는 원하는 거동들의 조합을 이용하여 적응하는 격자들을 정의하는 도구들을 포함할 수 있다는 것을 이해해야 할 것이다. 청구된 내용의 양태들은 열들에 대한 정의된 거동들을 구현하는 데 필요한 제약 시스템을 자동으로 생성할 수 있다. 이를테면, 템플릿 디자이너는 멤버 열들의 수 및 기본 거동(default behavior)을 정의하는 <grid> 노드를 생성할 수 있고, 그 후 아래 예에서와 같이, 개개의 열들에 대한 대안 거동들을 정의할 수 있는 격자 노드(grid node) 아래에 임의의 수의 열 노드들이 생성될 수 있다.
Figure 112008024340016-PCT00004
상기 격자 노드는 4개의 열들의 열 격자를 정의할 수 있다. 처음 3개의 열들은 페이지와 비례하여 증대하도록 정의되고, 두 번째 열은 다른 2개 각각보다 3배 더 넓다. 네 번째 열은 항상 200 픽셀 폭으로 고정 유지된다. 격자 노드가 구문 분석될 때, 예를 들어, "maingrid.grid0" 내지 "maingrid.grid4"로 명명된 격자 선(grid lines)을 정의하는 제약들이 생성될 수 있다. 페이지 폭이 변할 때 격자 선들 각각을 위치 지정(locate)하는 제약 시스템이 자동으로 생성될 수 있다. 예를 들어, "maingrid.column1.right", "maingrid.column1.left" 등으로 명명된 격자 선들에 대하여 열들을 정의함으로써 추가 제약들이 만들어질 수 있다. 템플릿 작성자는 요소들을 정의하는 제약들에서 이들 이름을 직접 참조할 수 있고, 그렇지 않으면 다음의 예들 중 뒤쪽 2개에서 행해지는 바와 같이 좌측 및 우측 제약들을 암시하는 "column" 특성을 위치 노드들에 배치할 수 있다.
Figure 112008024340016-PCT00005
두 번째 위치 열에서의 대시("-")는 여기에서 요소가 열 2와 열 3 둘 다를 스팬한다는 것을 나타낸다. 만일 하나의 격자만 정의되어 있다면, 상기 두 번째 예에서 행해진 것과 같이, 열 및 격자 이름들로부터 이름 프리픽스(name prefix)가 탈락될 수 있고, 그것들은 단일 격자를 가리키는 것으로 추정될 것이다. 개개의 열들에 더하여 열들의 스팬들이 이용될 수 있다. 요소들을 위치 지정하는 데 이용될 수 있는 추가 제약들이 각 열마다 생성될 수 있다. 이들은, "column.width" 및 "column.center"는 물론 부분 열 선들(fractional column lines)인 "column.1third", "column.2third", "column.1quarter" 등을 포함할 수 있지만, 이들에 제한되는 것은 아니다.
다중-열 페이지(multi-column page) 상의 텍스트 열(text columns), 분할기 그래픽(divider graphics) 및 피겨 요소(figure elements)와 같은, 비록 대부분의 속성은 아니라도 다수의 속성을 공통으로 공유하는 다수의 유사한 요소들을 페이지 상에 갖는 것이 일반적이다. 요소 정의들은 단일 <element> 노드 아래에 다수의 <location> 노드들을 배치함으로써 재사용될 수 있다. 각 위치 노드는 추가 노드의 특성들을 이용하여 크기가 정해지고 위치 지정되는 부모 요소의 새로운 인스턴스를 생성할 수 있다. 제약 식들(constraint experssions)에서 인스턴스들이 구별될 수 있도록 요소 이름들은 위치 노드가 나타나는 순서로 할당되고, 그들의 이름에 추가된 1-기반 인덱스(1-based index)를 가질 수 있다.
다수의 인스턴스화를 갖는 요소에서 제약들이 정의되는 경우, 종종 각 인스턴스가 각 제약에 대하여 고유한 이름을 사용하는 것이 필요하다. 다수의 인스턴스화를 용이하게 하기 위해 매크로들이 이용 가능하게 될 수 있다. 제약 이름 또는 식에서 나타나는 문자열 "!THIS!"는 그 시간에 처리되고 있는 인스턴스의 이름에 대해 평가할 수 있다. "!LAST!"는 이전 요소에 대해 평가할 수 있고, 요소들을 연쇄(chain) 또는 적층(stack)하는 것을 용이하게 한다. 마침표(".")로 이름을 시작하는 것은 일반적으로 현 인스턴스의 이름이 그 마침표에 선행하는 것을 가정한다.
다수의 위치 노드를 이용하는 것은 중복 요소들을 만드는 간결하고 효율적인 방법일 수 있지만, 그것은 또한 인스턴스들의 일부에서 변형들을 허용하는 데 유익할 수 있다. 예를 들면, 일부 동일한 요소들은 상이한 z-계층(z-layer)(후술됨) 요건들을 가질 수 있고 또는 상이한 콘텐트 스트림들로부터 소비할 수 있다. 이 때문에, 요소 노드에서 정의된 어떤 속성이라도 위치 노드에서 무효화될 수 있다. 계층 또는 스타일 ID와 같은, 단일 값으로 이루어진 속성들은 위치 노드에 상에 특성을 설정함으로써 무효화될 수 있다. 전제 조건(preconditions)과 같은, 보다 복잡한 속성들은 위치 노드 아래에 전제 조건 노드를 배치함으로써 덮어쓰기(overwrite)될 수 있다. 다음 예는 3번 인스턴스화되고 두 번째 2 상에서 덮어쓰기된 속성들을 갖는 요소를 보여준다.
Figure 112008024340016-PCT00006
AGBDL 시스템에서는 단일 페이지 상에서 지원되는 열들의 각 카운트에 대하여 새로운 템플릿들의 패밀리(family of templates)을 생성하는 것이 일반적이었다. 템플릿들의 패밀리는 페이지 폭들의 범위에 의해 선택될 것이다. 템플릿들의 1 열 패밀리(one column family of templates)는 좁은 페이지들에 대하여 사용될 수 있고 페이지 폭이 주어진 임계값을 넘어서 증가하면 시스템은 2 열 패밀리로 전환할 것이다. 각 패밀리는 페이지 상의 콘텐트의 상이한 조합들 및 그 위치들을 커버하는 다수의 템플릿들을 포함할 것이다. 종종 이들 패밀리 내의 대부분의 시각적 요소들은 열의 수를 제외하고 동일하다.
패밀리들 간의 이러한 유사성은 페이지 폭이 변할 때 열들을 크기 조정할 뿐만 아니라, 페이지 상의 열의 수를 변화시킬 수도 있는 적응 격자를 정의함으로써 이용될 수 있다. 이것은 템플릿 내의 격자 정의 노드 아래에 <adaptive> 노드를 배치함으로써 달성될 수 있다. 적응 노드가 존재하는 경우 격자 노드 내의 열 카운트는 열의 최대 수로서 기능할 수 있다. 적응 노드에는 임의의 주어진 페이지 폭에서 얼마나 많은 열들이 활성화되는지를 결정하는 규칙이 배치될 수 있다. 규칙들을 예를 들면 minColumnWidth 또는 maxColumnWidth로 지정될 수 있다. minColumnWidth는 템플릿에게, 전형적으로 모두가 적어도 주어진 임계값의 표준 폭을 갖는 열들의 최대 수를 사용할 것을 지시할 수 있다. 열들은 상이한 비례 크기를 가질 수 있으므로, 각 열의 실제 크기는 최소 및/또는 최대 폭을 검사할 때 열의 비례 값으로 나누어질 수 있다.
작성자는 페이지가 모든 열들을 포함할 만큼 폭이 넓지 않을 경우 열들이 탈락(drop)되는 순서를 제어하는 우선 순위를 임의의 또는 모든 열들에 부여할 수 있다. 우선 순위가 지정되지 않은 경우 기본(default) 우선 순위가 적용될 수 있다. 예를 들면, 우측에서 좌측으로 열들을 탈락시키도록 기본 우선 순위가 설정될 수 있다. 상이한 우선 순위를 할당하기 위해 작성자는 좌측에서 우측으로 열들에 할당할 우선 순위 값들의 쉼표로 분리된 목록으로 격자 정의 노드에 우선 순위 특성을 포함시킬 수 있다. 대안으로, 작성하는 격자 정의의 열 정의 노드들에 우선 순위 특성들을 포함시킬 수 있다. 우선 순위는 전형적으로 정수 값이다. 주어진 페이지 레이아웃에 대하여, 일반적으로 활성 열들의 수 이하의 우선 순위 값을 갖는 열들만이 포함된다.
템플릿의 인스턴스화로부터 적응 열들이 탈락되는 경우, 제약 시스템은 일반적으로 열을 제로 폭으로 붕괴시킬 것이다. 레이아웃 시에 제로 폭을 갖는 요소들은 전형적으로 콘텐트를 소비하거나 또는 템플릿 스코어에 기여하지 않을 것이다. 만일 한 요소가 다수의 열들을 스팬하면, 그 요소는 아마도 임의의 주어진 레이아웃에서 활성인 열들만을 스팬하는 것으로 보일 것이다.
때때로 디자이너는 적응 열들을 갖는 페이지의 최좌측 또는 최우측 열에 요소를 배치하고 싶을 것이다. 이를 쉽게 하기 위해, 위치 노드들은 열 특성 내의 특수 키워드, 예를 들어, "leftmost" 또는 "rightmost"를 인지할 수 있다.
콘텐트에의 템플릿 적응
템플릿들은 콘텐트의 상이한 구성들에 다수의 방법으로 적응할 수 있다. AGBDL 템플릿들 상에는, 정확한 콘텐트 요건을 포함하여, 각 템플릿이 사용될 수 있는 상황을 나타내는 다수의 전제 조건들이 배치될 수 있다. 이와 대조적으로, 청구된 내용의 양태들은 전체로서 템플릿 외에도 템플릿 내의 개개의 요소들 상에 전제 조건들이 배치되게 할 수 있다. 이들 요소 전제 조건들은, 이용 가능한 콘텐트, 보기 조건(viewing conditions), 및 시스템에서의 임의의 다른 제약들에 따라서, 요소들이 레이아웃에서 조건부로 포함되게 할 수 있다. 옵션인 요소가 사용되지 않는 경우 템플릿의 객관적 스코어에 벌점을 적용하는 것이 유익할 수 있다. 예컨대, "element-name.active"라 명명된 특수 제약 값이 모든 각 요소에 대하여 템플릿의 제약 시스템에 자동으로 추가될 수 있다. element-name.active에 대한 값은, 예를 들면, 해당 요소가 레이아웃에서 포함되는 경우 1로, 해당 요소가 포함되지 않는 경우 0으로 설정될 수 있다. 이 제약 값은 템플릿의 객관적 스코어를 판정하는 데 있어서 임의의 요소들의 존재를 고려하기 위해 테스트될 수 있다. 요소 노드 상에 설정된 전제 조건들은 일반적으로 요소의 모든 인스턴스들에 적용된다. 전제 조건 노드들은 또한 추가 전제 조건들을 추가하거나 또는 요소 노드 상에 설정되어 있는 임의의 것을 무효화하기 위해 위치 노드들 내부에 배치될 수도 있다.
요소 전제 조건들은 다수의 요소들이 개별적으로 제어되게 할 수 있지만, 종종 요소들의 제어를 함께 묶는 것이 유익하고, 요소들은 몇몇 구성들에서 함께 그룹화될 수 있다. AND 그룹들은 몇몇 요소들이 단일 세트의 전제 조건들에 의해 제어되게 할 수 있다. 유사하게, OR 그룹들은 다수의 레이아웃 요소들이 정의되게 할 수 있고, 그들 중 하나만이 템플릿의 임의의 인스턴스에 포함될 것이다. 다수의 옵션들이 가능할 경우 어느 인스턴스를 사용할지를 결정하기 위해 몇몇 옵션들 및/또는 알고리즘들이 지원될 수 있다. 최초 적합(First-Fit) 알고리즘은 모든 특정 전제 조건들이 만족되는 그룹 내의 처음 요소를 사용할 수 있다. 최적 적합(Best-Fit) 알고리즘은 각 그룹 멤버를 평가하고 최적의 객관적 레이아웃 스코어를 반환하는 요소를 사용할 수 있다. 최초 양호 적합(First-Good-Fit) 알고리즘은 주어진 임계값 이상인 레이아웃 스코어를 반환하는 그룹 내의 처음 요소를 사용할 수 있다.
작성자는 옵션인 요소들을 갖는 템플릿들을 디자인할 때 템플릿의 주어진 인스턴스화에 임의의 개별 요소가 존재하든 존재하지 않든 요소들 간의 제약 관계들이 유효하게 유지되고 원하는 결과를 생성하도록 주의를 기울여야 한다는 것을 알아야 할 것이다. 고정 크기 요소들은 인스턴스화되지 않을 경우 그들의 치수를 유지할 수 있지만 recomputeHeight="true"로 정의된 가변 높이 요소들은 일반적으로 제로 높이로 크기 조정된다. OR 그룹의 경계들을 정의하는 제약들은 각 레이아웃에 대하여 어느 멤버 요소가 선택되든 그 멤버 요소의 경계와 동일하도록 자동으로 지정될 수 있다.
또 다른 양태에 따르면, 콘텐트에 템플릿을 적응시키는 방법이 제공될 수 있다. 이 방법은 서체(typeface) 및 크기와 같은 스타일 특성들을 특정 콘텐트에 적응시키는 것을 다룬다. 텍스트의 블록에 대한 스타일은 템플릿이 디자인될 때 디스플레이 요소에 할당될 수 있다. 이것은 전형적으로 문제가 되지 않지만, 신문 페이지 상에 표제를 디스플레이하는 것과 같은, 일부 응용에서는, 텍스트의 시각적 외관이 그 유효성에 결정적이다. 인쇄된 신문에서, 페이지 편집자는 줄 바꿈(line breaking) 및 균형을 제어하여, 이용 가능한 공간을 채우도록 표제를 기입할 것이다. 상이한 크기의 열들에 걸쳐서 배치된 임의 표제들은 종종 서투르게 쪼개지거나 및/또는 줄들을 채우지 못하여, 열등한 품질의 레이아웃을 생성할 것이다.
청구된 내용의 또 다른 양태에 따르면, 이러한 어려움은 템플릿 내의 스타일이 디스플레이 시에 이용 가능한 콘텐트에 적응하게 함으로써 완화될 수 있다. 디자이너는 주어진 요소와 함께 사용할 가능한 스타일들의 목록을 특정할 수 있고, 레이아웃 엔진은 각각을 시도하여, 각각에 대한 객관적 스코어를 생성할 수 있다. 최적의 스코어를 생성하는 스타일이 실제 레이아웃에서 가장 자주 사용될 것이다. 그러나, 동일한 텍스트 및 템플릿 조합은 아마도 상이한 페이지 치수에서 상이한 스타일을 선택할 것이다. 텍스트 레이아웃을 평가하기 위한 방법이 최적의 스타일을 결정하는 데 이용될 수 있다. 예를 들면, 특정 스타일의 폰트 크기에 의해 크기 조정된, 최적의 라인-브레이커(line-breaker)의 스코어링 함수의 결과가 이용될 수 있다. 이 최적의 라인-브레이커는 문자 폭의 수로서 표현된 각 줄에 남아 있는 공백(white-space)을 측정한다. 문자 폭은 통상적으로 폰트 크기에 의존하므로, 폰트가 클수록 보다 작은(보다 나은) 스코어가 생성되는 경향이 있을 것이다.
문서 표현
매우 다양한 소스들로부터 도출된 데이터의 디스플레이를 고품질 방식으로 가능케 하도록 문서 표현이 확장되었다. 문서들은 전형적으로 원래의 AGBDL 시스템(후술됨)과 동일하지만, 추가 성능을 가지고 구성된다.
인터넷 상의 데이터에 대한 표준 포맷이 없으므로, 예컨대, XSLT를 통하여 데이터 소스들의 진행중 변환(on the fly translation)을 지원한다. XSLT는 소스 문서(일반적으로 XML 문서)를 변환 파일에 의해 지정된 일련의 규칙을 적용하여 새로운 결과 파일로 변환하는 시스템이다. 임의의 XML 데이터가 문서로 변환될 수 있고 문서는 그 후 결과의 문서에 의해 참조될 수 있는 적절한 템플릿들의 세트가 주어지면 디스플레이될 수 있다. 이런 식으로 XSLT 변환이 존재하면, 임의의 XML 데이터, 규칙에 맞는(well-formed) XML 소스를 갖는 웹 페이지, 또는 자동 변환이 가능한 기타 유형의 데이터가 인터넷으로부터 직접 로드될 수 있다.
사용자는 문서 경로 또는 URL(Universal Resource Locator)와 함께 우리의 뷰어(viewer)에 대한 매개 변수로서 변환 파일을 지정할 수 있다. 대안으로, 사용자는 운영 체제 레지스트리와 같은 레지스트리에 항목(entry)을 배치함으로써 경로 또는 URL 프리픽스를 변환 파일과 연관시킬 수 있다. 이러한 연관은 명명된 경로 또는 프리픽스로 시작하는 URL이 로드될 때마다 입력 문서에 XSLT 변환이 적용되는 것을 자동으로 촉진할 수 있다.
종래에는, XSLT 변환의 한가지 제한은 다수의 HTML 웹 페이지는 해당되지 않는 규칙에 맞는 XML에 대해서만 작용할 것이라는 점이다. 따라서 사용자는 특정 데이터를 구문 분석하기 전에 전처리할 수 있는, 웹-스크래퍼(web-scraper)와 같은, 대안 변환 프로그램을 지정할 수 있다. 일부 전형적인 응용들에서는, 전문화된 웹 스크래퍼와 그 스크래퍼의 출력에 작용하는 XSLT 변환의 둘 다가 최종 문서를 생성하는 데 이용된다.
문서의 기본 구조는 통상적으로 콘텐트를, 데이터의 순서화된 시퀀스들을 정의할 수 있는, 콘텐트 스트림들의 컬렉션으로 조직한다. 콘텐트는 텍스트, 이미지들 또는 복합 항목들(compound items)의 스트림일 수 있고, 그것들은 하위-템플릿들을 이용하여 재귀적으로 레이아웃된 그들 자신의 하위-스트림들의 컬렉션을 포함할 수 있다. 복합 요소들을 디스플레이하는 템플릿은 일반적으로 그 복합 요소의 개개의 스트림들을 레이아웃하는 데 이용될 수 있는 템플릿들의 목록을 제공해야 한다.
문서에 외부 콘텐트가 포함되는 방식에 유연성이 제공되게 하는 것이 종종 유익하다. 문서 내의 대부분의 임의의 콘텐트 스트림은 제공된 경로 또는 URL로부터 로드될 수 있는 외부 스트림일 수 있다. 대안적으로 또는 부가적으로, 단일 콘텐트 스트림 내의 개개의 콘텐트 항목들에 대하여 외부 참조들이 지정될 수 있다. 사실상 모든 외부 참조들은 연관된 XSLT 변환 또는 링크로 지정된 다른 전처리 에이전트를 가질 수 있다. 대부분의 임의의 참조된 문서는 완전히 복합 항목으로서 로드될 수 있고 그렇지 않으면 개개의 스트림들이 그 문서로부터 추출될 수 있다. 예를 들면, 뉴스 집계기에서는 개개의 소스들로부터 로드된 개개의 뉴스 스토리들을 포함하는 스트림들의 컬렉션, 및 그 후 콘텐트들의 테이블을 구축하기 위해 그들 각각의 표제들을 추출하는 단일 스트림을 가질 수 있다.
AGBDL 시스템에 제공되어 있지는 않지만, 청구된 내용의 양태들은, 그 자신의 디스플레이 템플릿들의 목록을 포함하는 복합 요소로서 정의될 수 있는, 하위-문서의 개념을 도입할 수 있다. 하위-문서는 부모 템플릿에서 지정된 템플릿들보다는 그것이 렌더링될 때 그 자신의 템플릿들을 이용할 수 있다. 하위-문서들의 포함으로, 사실상 모든 문서가 이제는 부모 및 자식 문서들의 계층 구조로서 간주될 수 있다.
문서 트리의 각 노드에서 디자이너는 템플릿들을 제공함으로써 부모 문서가 레이아웃을 제어하는지 자식 문서가 레이아웃을 제어하는지를 선택할 수 있다. 이것이 전부가 아니면 전무 선택(all or nothing choice)가 되게 하는 것이 반드시 바람직하지는 않다. 그보다는, 부모 템플릿으로부터 하위-문서의 레이아웃에 영향을 미치는 일반적인 방법들이 있다. 한 가지 방법은 부모가 자식 템플릿의 스타일시트(stylesheet)를 무효화하는 것이다. 전형적인 신문에 따라서 모델링된 집계된 문서에서는, 통상적으로 표제들이 나란히 나타날 때 용이하게 구별되도록 표제들의 스타일을 변경하는 것이 바람직하다. 부모 템플릿은 스토리들이 나타날 요소들에 상이한 스타일시트들을 전달함으로써 이를 보장할 수 있다.
자식 문서에 영향을 미치는 또 다른 방법은 매개 변수 전달(parameter passing)에 의한 것이다. 자식 템플릿들에 전달된 매개 변수들은 템플릿이 인스턴스화되기 전에 자식의 제약 시스템 내에 입력될 수 있다. 매개 변수 값들은 부모 제약 시스템으로부터 파생되거나 직접 지정될 수 있다. 이들 전달된 제약 값들은 자식 문서에 의해 임의의 수의 방법으로 이용될 수 있다. 그것들은 하위-템플릿 내의 개개의 요소들에 대한 전제 조건들에 포함될 수 있고, 또는 요소들의 위치 및 크기를 제어하는 다른 제약들에 의해 참조될 수 있다. 다른 예들에서는 논-피처(non-featured) 하위-문서들에서 큰 그래픽들의 디스플레이를 억제하지만, 상위-레벨 문서로서 또는 피처 역할(featured role)로 하위-문서로서 디스플레이될 경우 그것들을 포함시키기 위해 매개 변수들을 이용한다. 또한 하위-문서 내의 특징들을 부모 페이지 상의 또는 또 다른 하위-문서 내의 특징들과 정렬시키기 위해 매개 변수들을 이용할 수도 있다. 디자이너들은 하위-템플릿이 평가된 후에 부모 템플릿의 제약 시스템 내에 입력될 수 있는 반환 값들을 하위-템플릿으로부터 유사하게 지정할 수 있다.
하위문서들 및 복합 요소들의 하나의 특징은 그것들이 이제는 독립적으로 페이지네이트될 수 있다는 것이다. 하위-문서의 연속 페이지들은 하위-문서의 페이지들을 적소에 넘김으로써 액세스될 수 있고, 또는 부모 문서의 연속 페이지들 상에 레이아웃될 수 있다. 첫 번째 방법은 사용자가 안쪽 페이지로 점프하지 않고 부모-제1면 상의 전체 하위-문서 뉴스 스토리(entire sub-documented news story)를 읽게 할 수 있다. 그것은 또한 인덱스가 그것의 페이지 상에 할당된 공간보다 더 크게 하면서도 그것의 모든 데이터가 액세스 가능하게 할 수 있다. 다른 용도들은, 예를 들면, 부모의 단일 페이지 상에 존재하는 다중-페이지 광고(multi-page advertisements) 또는 세로 막대(side bars)를 포함할 수 있다.
비직사각형 템플릿들 및 요소들
원래의 AGBDL 시스템 및 본 혁신 양쪽 모두의 템플릿들은 일반적으로 원점(origin), 폭 및 높이를 갖는 직사각형들로서 정의된다. 그러나, 비직사각형 요소들이 요망되는 경우가 많이 있다. 그러한 기능은 요소들을 z-오더(z-order)로 계층화함으로써 단일 템플릿에서 달성될 수 있고, 이 경우 상위 계층 요소들(higher-layer elements)의 섹션들은 그것들이 겹치는 하위 계층 요소들(lower-layer elements)로부터 구별된다. 요소들은 내림 계층 차순(descending layer order)으로 평가될 수 있다. 각 요소가 레이아웃되기 전에, 모든 이전에 레이아웃된 요소들의 GDI 영역들은 현 요소의 GDI 영역으로부터 공제(subtract)될 수 있다. 이것은 완성된 요소들의 영역들이, 예컨대, 각각이 완성될 때 그것들을 단일 영역 내로 배열하는 합집합 연산들(union operations)에 의해 누적되는 경우에는 단일 연산으로 행해질 수 있다. 이러한 연산은 나중의 요소들 내의 임의의 텍스트가 다른 겹치는 요소들 주위에 흐르게 할 수 있지만, 이미지들은 전형적으로 여전히 폐색될 것이다. 그러나, 요소 영역들은 통상적으로 하위-템플릿 내의 영역들로부터 직접 공제되지 않는다. 대신에, 요소의 영역들의 누적된 합집합(accumulated union)이 하위 계층들 내의 하위-템플릿들에 전달될 수 있고, 이 부모 영역은 그 하위-템플릿들에서 누적된 영역의 인자를 공급(seed)할 수 있다. 이런 식으로 텍스트는 상위 레벨 템플릿들에서 겹치는 요소들 주위에 흐를 수 있다.
부모 영역의 공제는 텍스트를 리플루우(re-flowing)함으로써 하위-템플릿들을 겹치는 것의 어려움의 일부를 다룰 수 있지만, 자식 내의 이미지들 또는 하위-템플릿들을 폐색하는 것을 피하는 것도 바람직하다. 따라서, 이미지들을 방해가 되지 않는 곳에 흐르게 하는 쉬운 방법이 없으므로, 대신에 요소가 (부분적으로 또는 완전히) 폐색되는지가 판정되고, 요소의 객관적 스코어에 그것을 반영한다. 만일 템플릿의 작성자가 전체 템플릿의 스코어에 요소의 스코어를 포함시키기로 결정하면, 만일 폐색된 요소가 없는 또 다른 템플릿을 입수할 수 없다면 해당 템플릿은 무시될 수 있다. 대안적으로 또는 부가적으로, 폐색된 요소에 대한 몇몇 위치들은 최적 적합 OR 그룹 내의 하나의 템플릿에 포함될 수 있고, 그 경우 폐색되지 않은 위치가 이용 가능하다면 일반적으로 그것이 선택될 것이다.
폐색된 요소들은 요소의 GDI 영역으로부터 부모 영역을 구별해내고, 그 후 결과의 영역을 원본과 비교함으로써 검출될 수 있다. 템플릿 작성자는 임의의 요소가 레이아웃될 때 겹침이 발생하는 경우 그 요소의 객관적 스코어에 적용될 벌점(penalty)를 특정하는 특성을 그 요소에 포함시킬 수 있다.
다른 양태에서, 부모 영역은 문서들에서 추가적인 유연성을 제공하기 위해 이용될 수 있다. 부모 영역은 운영 체제의 애플리케이션 창의 시스템 클리핑 영역의 최상위 레벨 템플릿을 초기화할 수 있다. 이것은 시스템이 데스크톱 상의 다른 애플리케이션들의 겹치는 창들 주위에 문서 텍스트를 흐르게 하고, 잠재적으로 폐색된 이미지들을 방해가 되지 않는 곳에 이동시키게 할 수 있다. 겹치는 영역들을 약간 팽창시켜 임의의 리플로우된 텍스트에 여백을 제공함으로써 최적의 결과가 얻어질 수 있다.
상술한 절차들은 하위-문서들이 비직사각형 요소들을 차지하게 할 수 있지만, 이것은 여전히 반드시 고품질 레이아웃을 생성하기에 충분한 것은 아니다. 이를테면, 신문 제1면 상에서, 톱기사(lead story)로부터 사진을 두드러지게 크게 다루기를(feature) 원할 수 있고, 그 사진과 기사의 나머지의 합집합은 편리한 직사각형을 형성하지 않을 수 있다. 경계 직사각형이 항상 요소들 주위에 그려질 수 있지만, 종종 공제된 큰 또는 불규칙한 영역들이 여전히 의도한 대로 보이게 할 수 있는 템플릿을 디자인하는 것은 어렵다. 이러한 어려움은 몇몇 요소들의 AND 그룹을 형성함으로써 보다 쉽게 해결될 수 있고, 그 요소들 모두는 단일 복합 콘텐트 또는 하위-문서로부터 콘텐트를 소비한다. 이것은 하위-문서를 임의의 형상의 영역에 효과적으로 레이아웃하는 것을 가능케 할 수 있다. 신문 페이지 상의 피처 스토리(featured story)의 예에서는, 하나의 요소가 사진 스트림으로부터 소비하고 그 밖의 요소는 그 밖의 모든 것을 소비하는 것이 바람직하였다. 이 일반적인 경우에 대하여, consumeRemainder 특성이 인지되고 이용될 수 있다. 디자이너는 이 특성을 AND 그룹 내의 한 요소에 배치할 수 있고, 그것은 시스템이 그 요소의 그룹의 다른 멤버들에 의해 소비되지 않은 그 요소 내의 모든 콘텐트를 이용할 것을 알려준다.
도메인-특정 과제들(Domain-specific challenges)
이 섹션에서는, 콘텐트의 집계들을 레이아웃하는 데 특정한 어려움들 중 일부는 물론, 이들 어려움들을 처리하기 위해 개발된 기법들 중 일부가 설명된다.
열 균형(Column balancing)
다중열 레이아웃(multicolumn layout) 상에 다수의 스토리들 또는 기사들을 레이아웃할 때, 스토리들을 서로에 관련하여 배열하는 방법에 대한 다수의 옵션들이 있을 수 있다. 2개의 스토리들 간에 페이지(또는 페이지의 일부)를 나누는 한 가지 일반적인 방법은 페이지를 수평으로 분할하여, 첫 번째 스토리의 하부(bottom) 아래에 두 번째 스토리를 배치하는 것이다. 이러한 유형의 레이아웃을 이용할 경우, 콘텐트에 할당된 열들 사이에 콘텐트를 균일하게 분배하여, 각 열이 동일한 수직 위치에서 끝나도록 해야 한다.
구현에서, 이것은 페이지 상의 열들을 나타내는 요소들의 그룹(및 AND 그룹)이 balanceColumns 속성으로 태그(tag)될 때 트리거되는, 단순 반복 레이아웃(simple iterative layout) 알고리즘을 통하여 달성될 수 있다. 아래에서는, 이 반복 알고리즘이 단일 스토리를 레이아웃하고 그것의 하부를 가능한 한 고르게 유지하기 위해 어떻게 작용하는지가 설명된다.
첫째로, 페이지는, 예를 들면, 표준 그리디 레이아웃(greedy layout) 방법을 이용하여 레이아웃된다. 만일 콘텐트가 페이지를 완전히 채우면, 열들은 균형이 맞추어지고 이 레이아웃이 최종 결과로서 이용될 수 있다. 그렇지 않다면, 균형이 맞추어질 요소들 내에 남겨진 총 미사용 수직 공간이 측정된다. 이 여분 공간의 총량을 열들의 수로 나누어, 균형이 맞추어진 결과에서 각 열이 언더필(underfill)될 양에 대한 최초 추정(initial guess)을 제공할 수 있다. 다음으로, 이 수직 언더필의 측정치를 요소들의 하부로부터 공제하여, 균형이 맞추어진 텍스트의 하부로 기대하는 컷오프 위치(cutoff location)를 산출할 수 있다. 그 후 요소들 각각의 새로운 하부를 이 산출된 컷오프 위치로 설정하여 다시 레이아웃을 수행할 수 있다. 만일 모든 텍스트가 소비되고 텍스트가 균형이 맞추어지면(최종 열은 열들의 수보다 1 라인 적은 것까지 언더필되고 여전히 "균형이 맞추어진(balanced)" 것으로 간주되게 된다), 이 레이아웃이 이용될 수 있다. 그러나, 열들이 적절히 균형이 맞추어지지 않으면, 레이아웃 절차를 다시 수행함으로써 컷오프 위치가 조정 - 최종 열들이 너무 희박(sparse)하면 올려지고 모든 콘텐트에 대하여 충분한 여유가 없다면 낮추어짐 - 될 수 있다. 이 절차는 균형이 맞추어진 레이아웃에 수렴할 때까지 반복될 수 있다.
마지막으로, 요소들에 대한 새로운 하부는 해당 요소에 레이아웃된 임의의 콘텐트 바로 아래가 되도록 설정될 수 있다. 이것은 요소들이 반복이 수렴한 정확한 컷오프 값에 기초하여 예측할 수 없는 높이를 갖는 것을 방지할 수 있다.
쪼갤 수 없는 단락 및 원자 하위-문서(unbreakable paragraphs and atomic sub-documents)
어떤 상황에서는, 하나의 콘텐트를 페이지 경계에 걸쳐서 쪼개는 것이 이치에 맞지 않을 수도 있다. 예를 들면, 콘텐트가 단지 2 또는 3 줄을 스팬하는 1-문장의 요약인 경우, 단지 그 전체를 다음 페이지로 이동시키는 것이 차라리 나을 수 있다. 신문 같은 제1면의 특정한 경우에는, 신문의 안쪽 또는 다른 섹션들의 하이라이트로서 기능하는 다수의 작은 박스들이 있을 수 있다. 이들 작은 박스들의 콘텐트들은 전형적으로 상술한 바와 같은 개개의 스토리들의 짧은 요약들이다. 통상적으로 이들 간략한 요약들을 페이지 경계들에 걸쳐서 쪼개는 것을 피하는 것이 훨씬 더 보기 좋다. 따라서, 이를 달성하기 위해, 콘텐트 덩어리들(content chunks)이 "페이지 또는 요소 경계들에 걸쳐서 이 콘텐트를 쪼개지 말라(do not split this piece of content across either page or element boundaries)"는 것을 의미하는 속성으로 태그될 수 있고, 또는 요소들이 "여기에 완전히 디스플레이될 수 있는 콘텐트 항목들만 수용하라(only accept content items which can be entirely displayed here)"는 것을 의미하는 또 다른 속성으로 태그될 수 있다. 문제의 콘텐트는 개별 단락, 또는 아마도 사진 및 캡션 또는 세로 막대(side-bar)를 나타내는, 다수의 데이터 스트림을 포함하는 복합 항목일 수 있다.
상호 작용(Interactivity)
전자 문서들은 종이 문서들을 흉내내는 것으로 제한될 필요가 없다. 상이한 화면 치수들에 자동으로 적응하는 것은 용지 문서들이 할 수 없는 것이지만, 디스플레이 크기가 고정된 후에도, 문서는 용지 문서들의 모든 속성들을 취할 필요가 없다. 예를 들면, 콘텐트 가입자들은 온라인 문서들에서 하이퍼-링크(hyper-links)를 이용하는 것에 오래 익숙해졌지만, 독자가 전자 문서와 상호 작용할 수 있는 다른 방법들도 있다.
상호 작용의 일부로서, 하이퍼-링크가 문서들에서 지원될 수 있고, 링크들은 다른 문서들을 대상(target)으로 할 수 있다. 이것은 원시 문서들 및 상기 "문서 표현" 섹션에서 설명된 바와 같이 로드 시에 변환될 수 있는 문서들을 포함한다. 하이퍼링크는 대상 콘텐트의 경로 또는 URL 외에도, XSLT 변환 또는 다른 도우미 프로그램에의 참조를 포함할 수 있다. 하이퍼링크들은 또한 판독 가능하지 않은 URL들을 참조할 수도 있고, 그 경우 링크가 활성화될 때 콘텐트를 디스플레이하기 위해 웹-브라우저가 시작(launch)될 수 있다. 마지막으로, 하이퍼링크들은 또한 문서 내부의 콘텐트를 지시할 수도 있고, 그 경우 참조를 포함하는 페이지가 디스플레이될 수 있다.
복합 문서(예컨대, 하위-문서들을 포함하는 문서)에서 하이퍼링크를 활성화하는 경우, 몇 개의 가능한 거동들이 있다. 만일 링크가 최상위-레벨 문서에 있다면, 전체 문서가 참조된 문서로 대체될 수 있다. 만일 링크가 하위-문서에 있다면 그 하위-문서만 참조된 문서로 대체하는 것이 바람직할 수 있다. 이것은 전형적으로 시스템의 기본 거동(default behavior)이지만, 디자이너는 임의의 하위-문서 요소를 "론처(launcher)" 요소로서 특정할 수 있고, 이는 해당 요소 내의 활성화된 링크가 최상위-레벨 문서 또는 다른 지시된 하위-문서를 대신 대체하게 할 수 있다. 이러한 특징은 콘텐트들의 테이블 또는 인덱스를 구현하는 하위-문서에서 유용할 수 있다. 작성자는 임의의 요소 또는 위치 노드에서 "launcher" 특성을 참(true)으로 설정함으로써 요소를 론처로 만든다. 론처 요소들은 그 요소에 "target" 특성도 설정되어 있지 않다면 링크된 문서들이 최상위 레벨 문서를 대체하도록 촉진할 수 있다. "target" 특성은 템플릿 내의 또 다른 요소의 이름으로 설정될 수 있고, 그 후 링크된 문서는 명명된 요소 내에 현재 디스플레이된 하위-문서를 대체할 수 있다.
링크들을 활성화하는 또 다른 방법은 링크들을 페이지 상의 하위-문서 요소들로 끌어서 놓는(drag and drop) 것이다. 예를 들어, 신문과 같이, 다수의 하위-문서들의 컬렉션을 포함하는 페이지 상에서, 사용자는 그에 의해서 인덱스로부터 스토리를 끌어내어 그것을 페이지 상의 스토리 위치들 중 하나에 놓을 수 있다.
결과
본 혁신의 범위 및 능력을 증명하는 다수의 문서/애플리케이션이 설명되었다. 애플리케이션들은 온라인 잡지 슬레이트(Slate)의 적응 버전, 뉴욕 타임즈 RSS 피드로부터 스토리들을 취득하고, 그들의 웹사이트로부터 전체 콘텐트를 스크랩하고, 브로드시트 신문(broadsheet newspaper)의 형태로 스토리들을 디스플레이하는 뉴스-리더(news-reader), 및 인터넷을 통하여 데이터베이스 요청을 행하여 수천 개의 웹 소스들로부터 현 뉴스 속보(breaking news) 업데이트들을 검색하고, 적응 제1면 게이트웨이(adaptive front page gateway)로서 동작하여 개개의 적응 하위-문서들을 집계할 수 있는 인터넷 뉴스-집계기 MSN 뉴스봇 용의 프런트엔드(front-end)를 포함한다. 다른 구현들은, 예를 들면, 검색 결과들을 고품질 적응 디스플레이로 제공하는 MSN 검색 프런트엔드를 포함할 수 있다.
슬레이트 잡지 구현 데모(demonstration)은 AGBDL 템플릿 시스템을 이용하여 구축되었다. 그것은 1 내지 3 열 레이아웃들을 커버하는 페이지들을 구현하기 위해 74개의 템플릿을 필요로 하였다. 뉴욕 타임즈 데모는 새로운 템플릿 시스템을 이용하고 1 내지 6 열의 레이아웃들을 구현하면서도 5개의 템플릿만 필요로 한다. 5개의 템플릿들 각각은 슬레이트 데모 용으로 생성된 템플릿들의 크기의 약 1/4 크기이다.
이제 도 1을 참조하면, 매우 다양한 콘텐트를 가지고 다수의 크기 및 치수에서 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템(100)이 도시되어 있다. 일반적으로, 시스템(100)은 템플릿(104)을 수신하는 인터페이스(102)를 포함할 수 있다. 템플릿(104)은 문서 레이아웃에 대한 제약들의 고레벨 기술(high level description)일 수 있다. 레이아웃 엔진(106)은 템플릿(104)을 해석(interpret)하고, 템플릿(104)의 고레벨 제약들에 기초하여, 고품질 문서(110)를 생성하기 위해 문서 내에서 콘텐트(108)를 어디에 배치할지를 판정할 수 있다.
상술한 바와 같이, 고품질 문서는 현재의 디스플레이 치수 및 콘텐트가 주어진 경우 디스플레이된 출력이 보기 좋은 것으로 판정되는 문서이다. 디스플레이된 출력이 보기 좋은지 여부의 판정은 전체적인 시각적 효과는 물론 아래에서 도 3 및 6을 참조하여 보다 상세히 설명되는 다른 특성들에 기초한 것일 수 있다. 따라서, 레이아웃 엔진(106)은 전형적으로 고품질 레이아웃(110)을 생성하기 전에 배열될 콘텐트의 유형(들) 및 배열의 디스플레이 치수에 대한 사전 지식을 필요로 한다. 그러나, 템플릿(104)은 사전 지식을 가질 필요가 없고 템플릿(104)이 생성될 때 또는 템플릿(104)이 레이아웃 엔진(106)에 의해 수신될 때 전형적으로 콘텐트의 유형(들) 또는 디스플레이 치수에 대한 사전 지식을 갖지 않는다는 것을 이해해야 할 것이다.
이제 도 2를 참조하면, 일반적으로 사용자 인터페이스(202), 템플릿(104) 및 템플릿 저장소(204)를 포함하는 시스템(200)이 예시되어 있다. 사용자 인터페이스(202)는 템플릿(104)와 같은 템플릿들의 생성, 디자인 및/또는 수정을 용이하게 할 수 있다. 유사하게, 템플릿 저장소(204)는 템플릿(104)과 같은 템플릿들을 저장할 수 있다. 사용자 인터페이스(202)는, 고레벨 제약 매개 변수들을 통하여 템플릿(104)를 구성하고, 예컨대, 템플릿 저장소(204)를 통하여 템플릿(104)의 저장을 제공하기 위해 이용될 수 있는 GUI(graphical user interface) 또는 텍스트 기반일 수 있다는 것을 이해해야 할 것이다. 또한, 도 2에는 단 하나의 템플릿(104)이 도시되어 있지만, 인터페이스(102)는 임의의 수의 템플릿들(104)을 생성, 디자인 및/또는 수정하는 데 이용될 수 있다는 것을 이해해야 할 것이다. 유사하게, 템플릿 저장소(204)는 수정되고 및/또는 예컨대 레이아웃 엔진(106)(도 1) 또는 페이지네이터(602)(도 6)에 제공되기 위해 사용자 인터페이스(202)에 의해 검색될 수 있는 복수의 템플릿들(104)을 저장할 수 있다.
템플릿(104)은 레이아웃을 위한 화면 요소들의 정의와 같은 다수의 매개 변수들(예컨대, 요소들을 기술하는 것은 물론 그 요소들이 어떤 유형(들)의 콘텐트에 이용될 수 있는지를 제공하는 고레벨 구성들(high level constructs)), 및 요소들이 서로에 대하여 어떻게 배열되는지를 제어할 수 있는 제약 시스템(예컨대, 위에서 설명된 오버(over) 및 언더(under) 명령)으로 구성될 수 있다. 따라서, 템플릿(104)은 레이아웃의 여러 가지 상이한 양태들을 특정하기 위해 이용될 수 있는 고레벨 언어를 제공한다. 더욱이, 이 고레벨 언어는 작성자에게 보다 쉬운, 보다 자연적인 기술 언어일 수 있고, 동시에 보다 적은 수의 문(statements)으로 보다 폭 넓은 개념들을 표현하는 것이 가능하다. 또한, 이 고레벨 언어는 아래에서 도 5와 관련하여 보다 상세히 설명되는 바와 같이 저레벨 기술로 변환될 수 있다.
이제 도 3을 참조하면, 고품질 레이아웃(100)을 생성할 수 있는 레이아웃 엔진(106)을 일반적으로 포함하는 시스템(300)이 도시되어 있다. 상술한 바와 같이, 레이아웃 엔진(106)은 고품질 레이아웃(110)의 생성 시에 고수되어야 할 고레벨 제약들을 제공하는 템플릿(도시 생략)을 수신할 수 있다. 그러나, 레이아웃 엔진(106)은 출력이 고품질 레이아웃(110)이 되도록 필요한 조건들뿐만 아니라 템플릿의 무효화 제약들(overriding constraints)을 배열이 고수하도록 실제로 콘텐트(108)를 배열해야 한다.
전형적으로, 레이아웃 엔진(106)은 콘텐트(108)을 어떻게 배열할지를 판정하기 전에 고품질 레이아웃(110)을 위해 콘텐트(108)의 유형 및/또는 유형들은 물론 디스플레이 치수들을 검사할 것이다. 일부 경우에(예컨대, 콘텐트의 유형(들) 또는 다른 요인(factors)에 따라서), 레이아웃 엔진(106)은 의미 흐름(302), 브랜드 ID(identity)(304), 이미지 및 텍스트 상관(correlation)(306) 및 광고 테마(advertising themes)(308)와 같은 다수의 고려 사항들을 이용할 수 있다. 일부 경우에, 레이아웃은 의미 흐름(302), 브랜드 ID(304), 이미지 및 텍스트 상관(306) 및 광고 테마(308) 중 적어도 하나가 고려되지 않으면 고품질 레이아웃(110)이 되지 않을 것이다.
의미 흐름(302)은 일반적으로 단어들의 실제 의미를 나타낼 수 있으므로, 그것은 전형적으로 다른 단어들에 대한 단어들의 의미에 의지한다. 따라서, 신문 표제와 같은, 일부 콘텐트(108) 요소들 또는 유형들은, 단어들을 쪼개어 상이한 위치들에 배열하는 것이 레이아웃 배열을 위한 보다 간단한 해법을 제공할 수 있다 하더라도, 모호함을 방지하기 위해 그 단어들을 함께 유지하기 위한 강력한 의미적 근거(semantic rationale)를 갖고 있다. 예를 들면, 부정적 접두사 또는 단어 바로 뒤에 줄 바꿈을 두는 것을 피하기 위한 효과적인 의미 흐름(302) 근거가 있을 수 있다.
레이아웃 엔진(106)은 또한 고품질 레이아웃(110)을 생성할 때 브랜드 ID(304)를 고려할 수 있다. 예를 들면, 콘텐트(108)는 잘 인식되는 패턴으로 겹치는 2개의 관련 이미지들로 구성되는 상표일 수 있고 또는 브랜드는 충분히 예증이 되도록(fully illustrative) 다른 콘텐트(108)(예컨대, 그래픽 장식(graphic swirl), 텍스트 "Intel Inside" 및 4개의 오디오 톤을 포함하는 잘 알려진 인텔 상표)를 필요로 한다. 만일 각 이미지들 및/또는 다른 콘텐트가 적절히 배열되지 않으면, 그 레이아웃은 디자인 편집기들을 갖는 다른 디자인 매체가 성취할 수 있는 효과 및/또는 의미의 일부를 상실할 수 있다.
또한, 레이아웃 엔진(106)은 고품질 레이아웃(110)을 생성할 때 이미지 및 텍스트 상관을 고려할 수도 있다. 예를 들면, 신문은 일반적으로 항목들을 기술하는 작은 캡션을 제공할 것이다. 더욱이, 이미지들(예컨대, 항목들)은 그림의 특징들(features) 또는 사진 내의 인물들이 말하는 텍스트를 나타내는 콜아웃들(callouts)을 가질 수 있다. 그 경우에, 항목과 관련하여 특정 텍스트의 위치를 고려하는 것이 중요하다.
유사하게, 레이아웃 엔진(106)은 고품질 레이아웃(110)을 생성하는 데 광고 테마(308)를 고려할 수 있다. 광고 테마(308)는 항목들(302-306)에 관하여 위에서 주어진 몇몇 예들의 어떤 것이든 의지할 수 있고, 유사한 이유로 레이아웃 엔진(106)에 의한 추가 분석을 필요로 할 수 있다. 그러나, 광고 테마(308)는 다른 고려 사항들과 모순될 수도 있는 조건들을 필요로 할 수 있다는 것을 이해해야 할 것이다. 또한, 상기 예들은 단지 예시일 뿐 결코 제한적인 것으로 의도된 것이 아님을 이해해야 할 것이다. 본 발명의 범위 및 사상에서 벗어나지 않고 다른 애플리케이션들이 이용될 수 있다.
잠시 도 4를 참조하면, 매우 다양한 콘텐트를 가지고 다수의 크기 및 치수에서 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템(400)이 도시되어 있다. 시스템(400)은 일반적으로 레이아웃 엔진(106), 콘텐트(108), 고품질 레이아웃(110) 및 출력 장치(402)를 포함한다. 출력 장치(402)는 소형 손목 디스플레이, 휴대용 핸드-헬드 장치, 디지털 패브릭, 워크 스테이션, 벽 탑재 디스플레이 및 심지어 노변 광고판 및 건물 용의 매우 큰 디스플레이로부터의 디지털 콘텐트를 디스플레이할 수 있는 사실상 모든 장치일 수 있다. 전형적으로, 레이아웃 엔진(106)은 출력 장치(402)에 기초하여 고품질 레이아웃(110)의 크기 및 치수를 판정할 수 있다.
이제 도 5를 참조하면, 일반적으로 템플릿(104), 레이아웃 엔진(106), 콘텐트(108), 고품질 레이아웃(110) 및 저레벨 엔진(502)을 포함하는 시스템(500)이 도시되어 있다. 저레벨 엔진(502)은 저레벨 제약들에 기초하여 적응 격자 기반 레이아웃에 콘텐트(108)를 적용할 수 있다. 그러나, 저레벨 엔진(502)은 고레벨 템플릿(104)을 수용하는 능력을 갖고 있지 않지만, 충분한 상세 및 추상화가 제공된다면(예컨대, 레이아웃 엔진(106)에 의해), 저레벨 엔진은 고품질 레이아웃(110)을 생성할 수 있다. 저레벨 엔진(502)은 아래에서 AGBDL 시스템에서 상세히 설명된다. 위에서 설명한 바와 같이, 레이아웃 엔진(106)은 고품질 레이아웃(110)을 생성하기 위해 템플릿(104)에 제공된 고레벨 제약들에 기초하여(추가 조건들이 있다면 그 추가 조건들에도 기초하여) 콘텐트(108)를 어떻게 배열할지를 판정할 수 있다. 고품질 레이아웃(110)을 생성할 정확한 레이아웃이 알려지면, 레이아웃 엔진(106)은 또한 이 정보를 저레벨 제약들로 변환함으로써 저레벨 엔진(502)이 고품질 레이아웃(110)을 생성할 수 있게 할 수 있다.
도 6은 매우 다양한 콘텐트를 가지고 다수의 크기 및 치수에서 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템(600)을 예시한다. 시스템(600)은 일반적으로 인터페이스(102), 템플릿(104), 레이아웃 엔진(106), 콘텐트(108), 고품질 레이아웃(110), 및 페이지네이터(602)를 포함한다. 페이지네이터(602)는 아래에서 AGBDL 시스템에서 상세히 설명되지만, 이 컨텍스트에서 페이지네이터(602)는 레이아웃 엔진(106)에 추상화의 레벨을 제공한다. 예를 들면, 페이지네이터(602)는 콘텐트(108)를 수신하고 또한 주어진 콘텐트(108)에 사용될 템플릿(104)을 선택하기 위해 인터페이스(102)와 통신한다. 페이지네이터(602)는 대안적으로, 예컨대, 도 2의 템플릿 저장소(202)로부터 직접 템플릿(104)을 검색할 수도 있다는 것을 이해해야 할 것이다. 레이아웃 엔진(106)은 템플릿(104) 및 콘텐트(108)를 수신하고 고품질 레이아웃(110)을 생성하기 위해 콘텐트(108)를 배열한다. 본질에 있어서, 페이지네이터(602)는 각 문서 및/또는 문서의 각 페이지에 대하여 어느 템플릿을 사용할지를 판정할 수 있고 레이아웃 엔진(106)은 고품질 레이아웃(110)과 일관된 방식으로 실제 콘텐트(108)를 어떻게 배열할지를 판정할 수 있다.
이제 도 7을 참조하면, 고품질 레이아웃(110)을 생성하기 위한 시스템(700)이 예시되어 있다. 일반적으로, 시스템(700)은 콘텐트(108)를 수신하는 레이아웃 엔진(106)을 포함한다. 전형적인 실시예에 따르면, 콘텐트(108)는 다수의 소스들로부터 집계된, 각종의 유형(들)일 수 있다. 예를 들면, 콘텐트(108)는 데이터 저장소와 같은 콘텐트 저장소(702); 예컨대 하드웨어 장치로부터의 스트리밍 미디어(704): 및 매우 다양한 콘텐트 유형들일 수 있는 웹 콘텐트(706)로부터 검색될 수 있다. 따라서, 콘텐트(108)는 다양한 소스들로부터 제공될 수 있으므로, 콘텐트(108)의 소스 포맷(708)은 생각되는 바로는 상당히 변화할 것이다. 그러므로, 레이아웃 엔진(106)은 소스 포맷(708)으로 포맷된 콘텐트(108)를 수신할 수 있고 그 소스 포맷을 고품질 레이아웃(110)을 생성하기 위해 레이아웃 엔진(106)이 이용할 수 있는 포맷으로 변환할 수 있다. 예컨대, XLST에 의한 소스 포맷(708), 및 변환은 위에서 설명한 바와 같이 자동으로 수행될 수 있다.
도 8은 청구된 내용에 따른 방법(800)을 예시한다. 설명의 간소화를 위해, 이 방법들은 일련의 액트(act)들로서 도시되고 기술되어 있지만, 청구된 내용은 그 액트들의 순서에 의해 제한되지 않는다는 것을 이해해고 인식해야 할 것이다. 이는 일부 액트들은 여기에서 도시되고 설명된 것과는 상이한 순서로 및/또는 다른 액트들과 동시에 발생할 수도 있기 때문이다. 예를 들면, 숙련된 당업자들은 방법이 대안적으로, 상태 다이어그램에서와 같이, 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수도 있다는 것을 이해하고 인식할 것이다. 더욱이, 청구된 내용에 따른 방법을 구현하기 위해 예시된 액트들 전부가 필요하지 않을 수도 있다. 또한, 이하에 그리고 이 명세서 전반에 걸쳐서 개시된 방법들은 그러한 방법들을 운반하고 컴퓨터에 전송하는 것을 용이하게 하기 위해 제조물 상에 저장 가능하다는 것을 더 인식해야 할 것이다. 제조물이라는 용어는, 여기에서 사용될 때, 임의의 컴퓨터 판독가능 장치, 반송파(carrier), 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 망라하도록 의도된 것이다.
이제 도 8을 참조하면, 고품질 레이아웃을 생성하기 위해 콘텐트를 배열하는 전형적인 컴퓨터 구현 방법(800)이 예시되어 있다. 단계 802에서, 문서 레이아웃을 위한 템플릿이 선택될 수 있다. 전형적으로, 템플릿은 고레벨 언어로 정의되고 인터페이스, 페이지네이터 및 레이아웃 엔진 중 하나에 의해 템플릿 저장소로부터 선택될 수 있다. 단계 804에서, 문서에 대한 디스플레이 크기가 판정될 수 있다. 이 판정은 출력 장치 및/또는 그 안의 영역의 화면 크기에 기초하여 행해질 수 있다는 것을 인식해야 할 것이다. 단계 806에서, 문서에 대한 콘텐트가 수신될 수 있다. 전술한 바와 같이, 콘텐트는 콘텐트 저장소, 스트리밍 미디어, 인터넷 등과 같은 광범위한 소스드로부터 올 수 있고, 고품질 레이아웃과 일관되지 않을 수도 있는 매우 다양한 포맷으로 존재할 수 있으므로, 적절한 변환을 필요로 한다.
단계 808에서, 최후의 고품질 레이아웃을 위한 디스플레이 크기뿐만 아니라, 예컨대, 템플릿에 의해 제공된 고레벨 제약들을 이용하여, 특정 콘텐트에 대한 이용 가능한 위치들이 판정될 수 있다. 특정 콘텐트에 대한 다수의 이용 가능한 위치들이 존재할 수 있다는 것을 인식해야 할 것이다. 단계 810에서는, 단계 808에서 판정된 이용 가능한 위치들로부터 고품질 위치가 선택될 수 있다. 위에서 설명된 바와 같이, 고품질 위치는 전체 레이아웃의 고품질 문자를 유지하면서 특정 콘텐트가 도입될 수 있는 위치이다. 고품질 위치의 선택은 다수의 조건들에 의지할 수 있다는 것을 이해해야 할 것이다. 예를 들면, 고품질 위치들은 최적 적합, 최초 적합, 최초 양호 적합 등과 같은 일련의 알고리즘들 중 적어도 하나에 기초하여 판정될 수 있다. 그러한 판정은 또한 의미 흐름, 브랜드 ID, 항목 및 텍스트 상관, 광고 테마 등의 다른 조건들은 물론, 그 밖의 것들에 의지할 수도 있다. 단계 812에서, 고품질 레이아웃이 생성될 수 있다.
AGBDL 시스템
도 9는 청구된 내용의 전형적인 실시예에 따른 적응 격자 기반 문서 레이아웃 환경(900)의 블록도 표현을 디스플레이한다. 이 적응 격자 기반 문서 레이아웃 환경(900)은 적응 격자 기반 문서 시스템(902), 스타일 시트 저장 유닛(906), 및 템플릿 저장 유닛(908)을 포함한다. 적응 격자 기반 문서 레이아웃 환경(900)은 잘 알려진 컴퓨터 시스템, 환경, 및/또는 도 10을 참조하여 아래에서 보다 충분히 설명되는 구성들에서 발견되는 것들과 유사한 하드웨어 및 소프트웨어 구성 요소들에 의해 지원된다. 적응 격자 기반 문서 시스템(902)은 페이지네이터(602), 저레벨 엔진(502), 템플릿 작성 도구(910), 및 사용자 인터페이스(912)를 포함한다.
스타일 시트 저장 유닛(906)은 저레벨 엔진(502)을 통하여 적응 격자 기반 문서 시스템(902)에 통신 접속한다. 스타일 시트 저장 유닛(906)은 문서 콘텐트(904) 내의 텍스트의 스타일링을 특정하는 데 이용되는 스타일 시트 데이터를 저장한다. 스타일 시트 저장 유닛(906)은 데이터를 저장하고 검색할 수 있는 메모리 장치를 포함하고, 이 메모리 장치는, RAM(random access memory), 플래시 메모리, 자기 메모리 장치, 광 메모리 장치, 하드 디스크 드라이브, 이동식 휘발성 또는 비휘발성 메모리 장치, 광 저장 매체, 자기 저장 매체, 또는 RAM 메모리 카드를 포함하지만, 이들에 제한되는 것은 아니다. 대안적으로, 스타일 시트 저장 유닛(906)은 유선 및/또는 무선 네트워크 시스템을 통하여 액세스 가능한 원격 저장 설비(remote storage facility)를 포함할 수 있다. 또한, 스타일 시트 저장 유닛(906)은 상술한 바와 같은 주(primary) 메모리 장치 및 부(secondary) 메모리 장치의 다단계 시스템을 포함하는 메모리 시스템을 포함할 수 있다. 주 메모리 장치 및 부 메모리 장치는 서로에 대해 캐시로서 동작할 수도 있고 또는 부 메모리 장치는 주 메모리 장치에 대한 백업으로서 기능할 수도 있다. 또 다른 배열 구성에서, 스타일 시트 저장 유닛(906)은 단순 데이터베이스 파일로서 또는 SQL과 같은 쿼리 언어를 이용하는 검색 가능한, 관계형 데이터베이스로서 구성된 메모리 장치를 포함할 수 있다.
템플릿 저장 유닛(908)은 페이지네이터(602) 및 템플릿 작성 도구(910)를 통하여 적응 격자 기반 문서 시스템(902)에 통신 접속한다. 템플릿 저장 유닛(908)은 복수의 템플릿(1106)을 저장하고, 각 템플릿(1106)은 문서 콘텐트(904)의 단일 페이지의 레이아웃을 정의하는 데 이용될 수 있다. 문서 콘텐트의 레이아웃은 하나 이상의 템플릿(1106)에 따라서 레이아웃된 페이지들을 포함할 수 있다. 템플릿 저장 유닛(908)은 스타일 시트 저장 유닛(906)에 관련하여 위에서 설명된 메모리 장치와 유사한 메모리 장치를 포함한다.
페이지네이터(602)는 저레벨 엔진(502) 및 템플릿 저장 유닛(908)에 통신 접속한다. 페이지네이터(602)는 작업을 수행하고 여기에서 설명된 성능 및 기능을 제공하기에 적합한 하드웨어 및 소프트웨어(도 10 참조)로 구성된다. 또한, 페이지네이터(602)는 적응 격자 기반 레이아웃으로 처리하기 위한 문서 콘텐트(904)를 수신할 수 있다. 문서 콘텐트(904)는 다양한 콘텐트 유형들을 식별하는 각종의 콘텐트 스트림들(1303)에 의해 표현될 수 있고, 그 유형들은 본문 텍스트, 이미지, 인라인 피겨(inline figures), 세로 막대, 캡션, 미디어, 및 기타 적절한 문서 콘텐트(904) 등이 있지만 이에 제한되는 것은 아니다. 일반적으로, 페이지네이터(602)는 문서 콘텐트(904)의 개개의 템플릿들(1106)로의 매핑을 판정하고, 이 매핑은 문서 콘텐트(904)의 템플릿들(1106)과의 전체적으로 최적인 페어링(globally optimal pairing)을 포함할 수 있지만, 이에 제한되는 것은 아니다.
저레벨 엔진(502)은 페이지네이터(602) 및 스타일 시트 저장 유닛(906)에 통신 접속한다. 저레벨 엔진(502)은 작업을 수행하고 여기에서 설명된 성능 및 기능을 제공하기에 적합한 하드웨어 및 소프트웨어(도 10 참조)로 구성된다. 저레벨 엔진(502)은 처리를 위해 페이지네이터(602)로부터 문서 콘텐트(904) 및 템플릿들(1106)를 수신할 수 있다. 전형적으로, 저레벨 엔진(502)은 템플릿들(1106)을 이용하여 자동으로 문서 콘텐트(904)를 포맷하고(예컨대, 문서 콘텐트(904)에 템플릿들(1106)을 적용하고) 그에 의해 적응 격자 기반 문서들(914)을 생성한다. 또한, 저레벨 엔진(502)은 템플릿들(1106)을 문서 콘텐트(904)에 적용한 것으로부터 생성된 적응 격자 기반 문서(914)의 각 부분(예컨대, 각 페이지)에 대한 품질 스코어를 판정하는 데 이용될 수 있다.
동작 시에, 적응 격자 기반 문서 시스템(902)은 페이지네이터(602)를 통하여 템플릿 저장 유닛(908)으로부터 템플릿들(1106) 및 처리될 문서 콘텐트(904)를 수신한다. 페이지네이터(602)는 문서 콘텐트(904) 및 템플릿들(1106)을 실제 페이지 레이아웃들의 렌더링을 위해 저레벨 엔진(502)에 제공한다. 청구된 내용의 대안 실시예에서, 저레벨 엔진(502)은 템플릿 저장 유닛(908)에 통신 접속되고, 따라서, 템플릿 저장 유닛(908)로부터 직접 템플릿들(1106)을 수신한다. 저레벨 엔진(502)은 스타일 시트 저장 유닛(906)으로부터의 스타일 시트들 및 템플릿들(1106)을 문서 콘텐트(904)에 적용하고 그 결과에 기초하여 품질 스코어를 판정한다. 저레벨 엔진(502)은 페이지네이터(602)에 모든 유효한 템플릿(1106) 시퀀스들(예컨대, 문서 콘텐트(904)를 격자 기반 레이아웃에 성공적으로 그리고 완전히 적응시키는 모든 템플릿(1106) 시퀀스들) 및 그들의 대응하는 품질 스코어들을 제공한다. 페이지네이터(602)는 저레벨 엔진(502)에 의해 제공된 품질 스코어들에 기초하여 템플릿들(1106)의 일부 바람직한 시퀀스 또는 템플릿들(1106)의 전체적으로 최적인 시퀀스를 계산한다. 일련의 템플릿들(1160)과의 콘텐트의 페어링을 판정한 후에, 페이지네이터(602)는 문서 콘텐트(109) 및 템플릿들(1106)의 최적 시퀀스를 저레벨 엔진(502)에 제공한다. 저레벨 엔진(502)은 템플릿들(1106)의 최적 시퀀스에 따라서 문서 콘텐트(904)를 자동으로 포맷한다. 그 후 결과의 적응 격자 기반 문서(914)는 적응 격자 기반 문서 시스템(902)에 의해 적절한 수신처(destination)에 제공된다(예컨대, 사용자에게 디스플레이되거나, 다른 프로그램 모듈에 제공되거나, 파일에 저장된다).
템플릿 작성 도구(910)는 템플릿 저장 유닛(908) 및 사용자 인터페이스(912)에 통신 접속한다. 템플릿 작성 도구(910)는 작업을 수행하고 여기에서 설명된 성능 및 기능을 제공하기에 적합한 하드웨어 및 소프트웨어(도 10 참조)로 구성된다. 사용자 인터페이스(912)는 사용자에게 템플릿 저장 유닛(908) 내의 템플릿들(1106)을 생성하거나 수정하기 위한 창, 아이콘, 명령, 및/또는 메뉴의 세트를 제공한다. 템플릿 작성 도구(910) 및 사용자 인터페이스(912)의 사용을 통하여, 사용자는 레이아웃 요소들을 끌어서(draw) 배열하고, 그 요소들이 상이한 페이지 크기들에 어떻게 적응할지를 특정하고, 그 적응을 대화식으로(interactively) 미리 보기하고, 템플릿(1106), 전제 조건들(1109) 및 제약 기반 관계들(1115)을 설정할 수 있다.
동작 시에, 사용자 인터페이스(912)는 대화식으로 크기 조정(resize)될 수 있는 템플릿(1106)의 개략 표현을 제공한다. 템플릿(1106) 내에 새로운 레이아웃 요소(1112)를 생성하는 것은, 일반적으로, 사용자가 사용자 인터페이스(912) 디스플레이 상에 영역을 그린 다음 그 영역을 원하는 크기, 위치 및 계층으로 조작할 것을 요구한다. 적응 템플릿들(1106)의 무결성(integrity)을 유지하기 위해, 템플릿(1106)의 대부분의 요소들(1112)은 제약 기반 관계들(constraint-based relationshis)(1115)을 필요로 한다.
템플릿을 생성하거나 편집하는 동안, 사용자는 수평 또는 수직 가이드를 그려 페이지 격자를 정의한 다음 스냅-드래깅 인터페이스(snap-dragging interface)를 이용하여 격자에 대하여 요소들을 구속함으로써 페이지 레벨 제약들을 특정할 수 있다. 수평 또는 수직 가이드들은 페이지에 대하여 크기 조정(scale)하거나 일정한 오프셋을 유지하도록 디자인될 수 있다. 가이드들은 또한 사용자가 계층적 격자를 정의할 수 있게 하는, 다른 가이드들에 의존할 수도 있다. 구체적으로, 사용자 인터페이스(912)는 여러 가지 유형의 사용자 조작들을 지원하는데, 그 조작들은, (1) 사용자가 임의의 다른 가이드를 먼저 선택하지 않고 새로운 가이드를 추가하면, 새로운 가이드의 위치는 전체 페이지에 대하여 정의되고; (2) 사용자가 새로운 가이드를 생성하기 전에 단 하나의 기존 가이드를 선택하면, 새로운 가이드의 위치는 선택된 가이드로부터 일정한 오프셋으로서 정의되고; (3) 사용자가 새로운 가이드를 생성하기 전에 2개의 기존 가이드를 선택하면, 새로운 가이드의 위치는 2개의 선택된 가이드들에 대하여 정의되는 것을 포함하지만, 이들에 한정되는 것은 아니다. 사용자 인터페이스(912)는 또한 사용자가 가이드들을 사용하지 않고 요소들 간에 직접 제약들을 특정할 수 있게 하는 사용자 조작들을 제공할 수도 있다. 예를 들면, 사용자는 한 요소의 하부를 다른 요소의 상부와 일치하도록 제약할 수 있지만, 이에 제한되는 것은 아니다. 요소의 크기가 (페이지의 기하 형상(geometry)만이 아니라) 그 요소 내에 유입된 콘텐트에 의해 판정되는 상황에 대처하기 위해, 사용자는 템플릿 작성 도구(910)를 이용하여 요소의 치수들 중 하나를 제약한 다음 다른 치수는 문서 콘텐트(904)로부터 판정되는 것을 특정할 수 있다.
사용자 지정 템플릿(custom template)(1106)을 생성한 후에, 사용자는 제약 시스템 내의 임의의 변수의 값에 기초하여 추가 전제 조건들을 특정할 수 있다. 문서 콘텐트(904)에 대한 템플릿(1106)의 적합성은 스코어링 함수 및 전제 조건들의 사용에 의존한다. 일단 사용자가 템플릿(1106)의 요소(1112)의 콘텐트 소스들을 설정하면, 템플릿(1106)에 대한 콘텐트 전제 조건들은 자동으로 계산될 수 있다. 또한, 사용자는 문서 콘텐트(904)의 주어진 선택에 대하여 페이지 템플릿(1106)이 받는 품질 스코어에 영향을 미치는 요소들(1112)에 특성 선호도(attribute preferences)를 추가할 수 있다. 사용자가 요소(1112)의 2 이상의 특성을 지정하는 경우, 사용자는 그 특성들을 사용자 인터페이스(912)를 통하여 중요도의 순서로 순위(rak)를 매길 수 있다.
그 후 템플릿 작성 도구(910)는 어쩌면 요소 내로 유입될 수 있는 문서 콘텐트(904)의 상이한 선택들에 대하여 저레벨 엔진(502)이 평가하는 스코어링 함수를 자동으로 구성할 수 있다. 중요도의 순서로 사용자가 지정한 특성들의 순위가 주어지면, 템플릿 작성 도구(910)는 각 특성을 스코어 내의 숫자(diglt)와 연관시킬 수 있고, 보다 높은 차수의 숫자들은 보다 중요한 특성들에 대응하게 된다. 저레벨 엔진(502)이 콘텐트의 선택을 평가하는 경우, 스코어는 "1"을 전부 매칭하는 특성들(all matching attributes)과 연관시키고, "0"을 전부 매칭하지 않는 특성들(all non-matching attributes)과 연관시킴으로써 계산될 수 있다. 보다 구체적으로, "a1" 내지 "aN"이 중요도의 순서로 사용자가 지정한 N개의 특성 선호도들이라면, 스코어링 함수는 작성 시스템에 의해 다음과 같이 구성된다: S = match(a1,b1)*(10^(N-1)) + match(a2,b2)*(10^(N-2))... + match(aN,bN)*(10^0). 여기서 S는 평가되는 콘텐트의 특정 선택의 품질 스코어이고, b1 내지 bN은 그 콘텐트의 선택과 연관된 실제 특성 값들이고, match(a,b)는 "a"가 "b"와 같은 경우 "1"을 반환하고 그렇치 않으면 "0"을 반환하는 함수이다. 따라서, 이 스코어링 함수는 콘텐트가 사용자가 지정한 특성들에 얼마나 잘 매칭하는가에 따라서 보다 나은 또는 보다 나쁜 스코어를 반환한다. 스코어링 함수는 덜 중요한 특성들에 비하여 보다 더 중요한 특성들에 엄격한 우선 순위(strict priority)가 부여되도록 한다. 예를 들면, 특정 특성 "A"와 매칭하는 콘텐트의 선택은 특성 "A"에 매칭하지 않고 잠재적으로 덜 중요한 특성들에 매칭하는 콘텐트의 다른 선택들보다 더 나은 스코어로 귀결되지만, 이것에 제한되는 것은 아니다.
숙련된 당업자는 스코어링 함수가 다양한 방법으로 구현될 수 있다는 것을 인지할 것이다. 예를 들어, 요소의 각 특성은 최종 스코어 내의 숫자와 연관될 수 있지만, 이것에 제한되는 것은 아니다. 특성의 중요도는 그것의 대응하는 숫자를 결정하고, 가장 중요한 특성은 최상위 숫자(most significant digit)와 연관된다. 따라서, k번째 가장 중요한 특성인 특성은 최종 스코어에서 k번째 상위 숫자와 대응할 것이다. 콘텐트의 특정 선택에 대하여, 스코어링 함수는 "1"을 매칭하는 특성들에 대응하는 숫자들과 연관시키고 "0"을 매칭하지 않는 특성들에 대응하는 숫자들과 연관시킬 수 있다. 그러므로, 스코어링 함수는 가장 중요한 특성에 매칭하는 하나의 콘텐트가 가장 중요한 특성에 매칭하지 않는 콘텐트의 임의의 다른 섹션보다 더 높은(즉, 더 나은) 스코어를 갖는 것을 보장한다.
레이아웃 스타일(1103) 내의 상이한 템플릿들(1106)은 종종 공통의 특징들(예컨대, 요소, 전제 조건, 및 제약)을 포함한다. 따라서, 템플릿 작성 도구(910)는 템플릿들(1106) 각각의 개별적으로 실제로 변경하지 않고 수 개의 템플릿들(1106)에 걸쳐서 공통 특징들의 수정을 단순화하는 템플릿(1106) 상속(inheritance)의 시스템 또는 모델을 지원할 수 있다. 예를 들면, 사용자는 미리 존재하는 템플릿(1106)(예컨대, 부모 템플릿(1106))의 특징들을 상속하는 새로운 템플릿(1106)(예컨대, 자식 템플릿(1106))을 생성할 수 있지만, 이것에 제한되는 것은 아니다. 자식 템플릿(1106)은 부모 템플릿(1106)의 모든 요소들, 전제 조건들, 및 제약들을 자동으로 포함한다. 다음으로, 사용자는 원하는 열 템플릿(1106)을 생성하기 위해 자식 템플릿에 추가 요소들, 전제 조건들, 및 제약들을 추가할 수 있다. 만일 사용자가 부모 및 자식 템플릿들(1106) 사이에 공통인 속성들 중 하나를 변경하기를 원한다면, 그 사용자는 부모 템플릿(1106)의 속성들만 수정하면 되는데, 이는 그 수정은 부모 템플릿(1106)의 모든 자식 템플릿들(1106)에의 상속을 통하여 전파할 것이기 때문이다. 상속 모델은 매우 많은 수의 템플릿들(1106)의 관리를 단순화하고 템플릿들(1106) 간에 일관성을 유지하는 데 도움을 준다.
숙련된 당업자는 통신 접속하는 것이 적당한 유형의 접속을 포함할 수 있다는 것을 인지할 것이고, 그러한 접속으로는, 아날로그, 디지털, 무선 및 유선 통신 채널을 포함하지만, 이에 제한되는 것은 아니다. 그러한 통신 채널들은, 동선(copper wire), 광섬유, 무선 주파수, 적외선, 위성, 또는 다른 매체를 포함하지만, 이에 제한되는 것은 아니다.
도 10은 청구된 내용이 예시적인 실시예들에 따라서 이용할 수 있는 컴퓨팅 환경(1000) 및 그의 컴퓨터 시스템들(1010, 1080)의 블록도 표현을 디스플레이한다. 컴퓨팅 환경(1000) 및 그의 컴퓨터 시스템들(1010, 1080)은 청구된 내용의 실시를 위한 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨터 시스템들(1010, 1080)이 예시적인 컴퓨팅 환경(1000)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
그러므로, 본 발명은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성으로 동작한다. 청구된 내용과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템; 셋톱 박스, 프로그램가능한 가전제품, 네트워크 퍼스널 컴퓨터, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
청구된 내용의 양태들은 또한 일반적으로 컴퓨터 시스템에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어를 포함하는 일반적인 컨텍스트에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 프로그래밍, 개체, 컴포넌트, 데이터, 데이터 구조 등을 포함한다. 청구된 내용의 특징들은 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경들에서 실시될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있고, 메모리 저장 장치에 한정되는 것은 아니다.
도 10을 참조하면, 청구된 내용의 예시적인 컴퓨팅 환경(1000)은 컴퓨터 시스템(1010) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터 시스템(110)의 컴포넌트들은 처리 장치(1020), 시스템 메모리(1030), 및 시스템 메모리(1030)를 비롯한 각종 시스템 컴포넌트들을 처리 장치(1020)에 연결시키는 시스템 버스(1021)를 포함할 수 있지만 이에 제한되는 것은 아니다. 시스템 버스(1021)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스(즉, "메자닌 버스(Mezzanine bus)"로도 알려짐)를 포함하지만 이에 제한되는 것은 아니다.
컴퓨터 시스템(1010)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터 시스템(1010)에 의해 액세스되고, 판독되고, 기입될 수 있는 매체는 그 어떤 것이든지 포함할 수 있고, 이 컴퓨터 판독가능 매체는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 모두 포함할 수 있다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터, 데이터 구조, 프로그램 모듈, 프로그램, 프로그래밍, 또는 루틴과 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk), 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치, 또는 기타 자기 저장 장치, 또는 컴퓨터 시스템(1010)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 이용될 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터, 데이터 구조, 프로그램 모듈, 프로그램, 프로그래밍, 또는 루틴을 구현하고 임의의 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 제한되는 것은 아니다. 상기한 것들 중 임의의 것의 조합들도 컴퓨터 판독가능 매체의 범위 내에 포함된다.
시스템 메모리(1030)는 ROM(read only memory)(1031) 및 RAM(random access memory)(1032)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(1010) 내의 구성요소들 사이의 정보 전송을 지시하는 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS)(1033)은 통상적으로 ROM(1031)에 저장되어 있다. RAM(1032)은 통상적으로 처리 장치(1020)가 즉시 액세스할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 명령어들을 저장한다. 예로서, 도 10은 RAM(1032)에 전부가 또는 일부가 때때로 존재할 수 있는, 운영 체제(1034), 애플리케이션 프로그램(1035), 기타 프로그램 모듈(1036), 및 프로그램 데이터(1037)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(1010)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함할 수 있다. 단지 예로서, 도 10은 비이동식, 비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(1041), 이동식, 비휘발성 자기 디스크(1052)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(1051), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(1056)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(1055)를 예시한다. 예시적인 컴퓨팅 환경에 포함될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는, 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(1041)는 통상적으로 인터페이스(1040)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(1021)에 접속되고, 자기 디스크 드라이브(1051) 및 광 디스크 드라이브(1055)는 통상적으로 인터페이스(1050)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(1021)에 접속된다.
위에서 설명되고 도 10에 도시된 드라이브들(1041, 1051, 1055) 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터 시스템(1010)에 대한 컴퓨터 판독가능 명령어, 데이터, 데이터 구조, 프로그램 모듈, 프로그램, 프로그래밍, 또는 루틴의 저장을 제공한다. 도 10에서, 예를 들어, 하드 디스크 드라이브(1041)는 운영 체제(1044), 애플리케이션 프로그램(1045), 기타 프로그램 모듈(1046), 및 프로그램 데이터(1047)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(1034), 애플리케이션 프로그램(1035), 기타 프로그램 모듈(1036), 및 프로그램 데이터(1037)와 동일하거나 그와 다를 수 있다는 것이다. 운영 체제(1044), 애플리케이션 프로그램(1045), 기타 프로그램 모듈(1046) 및 프로그램 데이터(1047)에는 다른 번호가 부여되어, 최소한, 그들이 운영 체제(1034), 애플리케이션 프로그램(1035), 기타 프로그램 모듈(1036), 및 프로그램 데이터(1037)의 상이한 사본들이라는 것을 예시한다. 사용자는 키보드(1062) 및 통상적으로 마우스, 트랙볼, 또는 터치 패드로 불리는 포인팅 장치(1061) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터 시스템(1010)에 입력할 수 있다. 다른 접속된 입력 장치(도시 생략)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스(1021)에 결합된 사용자 입력 인터페이스(1060)를 통해 처리 장치(1020)에 접속되지만, 병렬 포트, 게임 포트, USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(1091) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(1090)와 같은 인터페이스를 통하여 시스템 버스(1021)에 접속된다. 모니터(1091) 외에, 컴퓨터 시스템(1010)은 또한 스피커(1097) 및 프린터(1096) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(1095)를 통해 접속될 수 있다.
컴퓨터 시스템(1010)은 원격 컴퓨터 시스템(1080)과 같은 하나 이상의 원격 컴퓨터로의 양방향 통신 접속 링크를 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터 시스템(1080)은 퍼스널 컴퓨터, 랩톱 컴퓨터, 서버 컴퓨터, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 비록 도 10에는 원격 컴퓨터 시스템(1080)의 메모리 저장 장치(1081)만 도시되어 있지만, 통상적으로 컴퓨터 시스템(1010)과 관련하여 상술된 구성요소들의 다수 또는 그 전부를 포함한다. 도 10에 도시된 양방향 통신 접속 링크는 LAN(local area network)(1071) 및 WAN(wide area network)(1073)를 포함하지만, 또한 기타 네트워크를 포함할 수도 있다. 이러한 네트워크들은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN(1071)에 통신 접속될 때, 컴퓨터 시스템(1010)은 네트워크 인터페이스 또는 어댑터(1070)를 통해 LAN(1071)에 접속된다. WAN(1073)에 통신 접속될 때, 컴퓨터 시스템(1010)은 통상적으로 인터넷과 같은 WAN(1073)을 통해 통신 링크를 설정하기 위한 모뎀(1072) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(1072)은 사용자 입력 인터페이스(1060) 또는 기타 적절한 메커니즘을 통해 시스템 버스(1021)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터 시스템(1010) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치(1081) 내에 저장될 수도 있다. 예로서, 도 10은 원격 애플리케이션 프로그램(1085)이 메모리 저장 장치(1081)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 컴퓨터들 사이에 양방향 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
도 11은 청구된 내용의 전형적인 실시예에 따른 적응 레이아웃 스타일들(1103) 및 템플릿들(1106)을 포함하는 문서 레이아웃의 블록도 표현을 디스플레이한다. 문서 콘텐트(904)는 템플릿 저장 유닛(908)에 저장된 템플릿들(1106)(예컨대, 때때로 "적응 템플릿(1106)"이라 불림)을 이용하여 특정 문서 레이아웃으로 포맷된다. 각 템플릿(1106)은 페이지 치수들의 범위에 걸쳐서 단일 페이지의 콘텐트에 대한 레이아웃을 정의할 책임이 있다. 청구된 내용의 전형적인 실시예에서, 템플릿(1106)은 대안 문서 콘텐트(예컨대, 보다 폭이 넓은 버전의 이미지 또는 최적의 그림)이 문서의 전체 페이지 레이아웃을 개선할 경우 그 대안 문서 콘텐트가 자동으로 선택될 수 있게 하는 프로토콜을 지원한다. 또한, 각 템플릿(1106)은 디스플레이 치수들의 범위에 적응함은 물론, 폰트 크기의 증가와 같은, 다른 유형의 보기 조건(viewing conditions)에도 적응하도록 디자인된다.
각 템플릿(1106)은, 또한, 레이아웃 요소들(1112), 제약 기반 관계들(1115), 및 전제 조건들(1109)을 포함할 수 있다. 레이아웃 요소(1112)는 콘텐트가 배치될 수 있는 템플릿(1106)의 페이지 내의 특정 영역을 나타낸다. 템플릿(1106)의 제약 기반 관계(1115)는 요소들(1112) 간의 관계를 정의하는 데 도움을 준다. 템플릿(1106)의 전제 조건(1109)은 페이지의 특징들 또는 문서의 특정 콘텐트에 대한 템플릿(1106)의 적합성을 특징화한다. 레이아웃 요소들(1112), 제약 기반 관계들(1115), 및 전제 조건들(1109)은 아래에서 도 12를 참조하여 보다 충분히 설명된다.
청구된 내용의 일 실시예에서, 문서 레이아웃은 템플릿들(1106)의 세트를 이용하여 기술된다. 문서 콘텐트(904)가 템플릿(1106)에 적용되는 경우, 적응 격자 기반 문서(914)가 최적 포맷으로 생성된다. 예를 들면, 본 시스템은 뉴욕 타임즈(the New Your Times), 뉴요커(the New Yorker), 워싱턴 포스트(the Washington Post), 뉴스위크(Newsweek), 또는 타임(Time) 잡지에 이용되는 디자인들과 같은 광범위의 현대식, 격자 기반 레이아웃 스타일들을 지원할 수 있다. 레이아웃 스타일들(1103)(예컨대, 때때로 여기에서 "적응 레이아웃 스타일(1103)"이라 불림) 각각은 특정 레이아웃 스타일(1103)의 특정 특징들을 구현하는 템플릿들(1106)의 컬렉션에 의해 정의된다.
도 11에 도시된 바와 같이, 적응 레이아웃 스타일(1103A)은 템플릿들(1106A1, 1106AN)의 세트에 의해 나타내어진다. 적응 템플릿"A1"(1106A1)과 적응 템플릿 "AN"(1106AN) 사이의 생략 부호는 적응 레이아웃 스타일 "A"(1103A) 내에 복수의 적응 템플릿들(1106)이 존재할 수 있다는 것을 예시하므로, 적응 레이아웃 스타일 "A"(1103A)는 도 11에 도시된 2개의 적응 템플릿(1106A1, 1106AN)에 한정되지 않는다. 유사하게, 적응 템플릿 "Z1"(1106Z1)과 적응 템플릿 "ZN"(1106ZN) 사이의 생략 부호는 적응 레이아웃 스타일 "Z"(1103Z) 내에 복수의 적응 템플릿들(1106)이 존재할 수 있다는 것을 예시하므로, 적응 레이아웃 스타일 "A"(1103A)는 도 11에 도시된 2개의 적응 템플릿(1106Z1, 1106ZN)에 한정되지 않는다. 또한, 하나의 적응 레이아웃 스타일(1103A)은 또 다른 적응 레이아웃 스타일(1103Z)과는 상이한 수의 적응 템플릿들(1106)을 포함할 수 있다.
적응 레이아웃 스타일들(1103)은 템플릿 저장 유닛(908)에 저장된다. 각각이 적응 레이아웃(1103)은 그것과 연관된 템플릿들(1106)의 세트를 식별한다. 적응 스타일 레이아웃 "A"(1103A)와 적응 스타일 레이아웃 "Z"(1103Z) 사이의 생략 부호는 템플릿 저장 유닛(908) 내에 복수의 적응 레이아웃 스타일(1103)이 존재할 수 있다는 것을 예시하므로, 도 11에 도시된 2개의 적응 레이아웃 스타일(1103A, 1103Z)에 한정되지 않는다. 예를 들면, 적응 레이아웃 스타일들(1103) 및 적응 템플릿들(1106)은 청구된 내용 안에서 XML에 의해 나타내어질 수 있다.
도 12는 청구된 내용의 전형적인 실시예에 따른 적응 템플릿(1106)의 블록도 표현을 디스플레이한다. 템플릿 저장 유닛(908) 내의 각각의 적응 템플릿(1106)은 레이아웃 요소들(1112), 그 요소들(112) 간의 관계를 정의하기 위한 제약 기반 관계들(1115), 및 문서의 특정 콘텐트에 대한 템플릿(1106)의 적합성을 특징화하는 전제 조건들(1109)을 포함할 수 있다.
레이아웃 요소(1112)는 콘텐트가 배치될 수 있는 템플릿(1106)의 페이지 내의 특정 영역을 나타낸다. 전형적으로, 격자 기반 문서 레이아웃 내의 요소들(1112)은 템플릿(1106) 페이지의 직사각형 영역들이다. 각 레이아웃 요소(1112)는 특정 소스 스트림 변수(specified source stream variable)(1209), 요소 z-오더 배치 변수(element z-order placement variable)(1212), 및 레이아웃 템플릿 변수(layout templates variable)(1215)를 포함한다. 특정 소스 스트림 변수(1209)는 요소(1112) 내에 어느 콘텐트가 이용될 수 있는지를 특정한다. 예를 들면, 특정 소스 스트림 변수(1209)는 템플릿(1106)의 요소(1112) 내에 이미지만 배치될 수 있는 것을 특정할 수 있지만, 이에 제한되는 것은 아니다. 청구된 내용의 대안 실시예에서는, 다수의 요소들(1112)이 동일한 콘텐트 스트림(1303)(도 13을 참조하여 후술됨)으로부터의 콘텐트를 이용한다. 그러한 구성 배열에서는, 흐름(flow)이 확립되고 콘텐트 스트림(1303)의 콘텐트는 하나의 요소(1112A1)로부터 다음 요소(1112A2)까지 분포된다.
요소(1112)의 요소 z-오더 배치 변수(1212)는 각 요소(1112)가 그것의 위치를 요소(1112) z-오더로 특정하게 한다. 일반적으로, z-오더에서 보다 상위에 있는 요소들(1112)은 문서 레이아웃 내에서 하위 요소들(1112)의 꼭대기에 위치하고, 따라서, 상위 요소들(1112)의 영역은 밑에 있는 요소들(1112)의 영역으로부터 공제된다. 사실상, 요소 z-오더 배치 변수(1212)는 격자 기반 페이지 디자인들이 겹치는 요소들(1112), 즉 다른 요소들(1112)의 영역들을 잘라내는 것으로 보이는 영역 들을 가질 수 있게 한다. 예를 들면, 문서 레이아웃 내의 텍스트는 피겨 주위에 흐를 수 있다. 피겨는 텍스트보다 상위 z-오더이고, 따라서, 피겨는 텍스트용으로 예비된 영역의 일부를 잘라내는 것으로 보인다. 피겨 또는 이미지 주위에 텍스트를 둘러싸는(wrapping) 것은 격자 기반 문서 레이아웃 내에서 사용되는 기법이다.
레이아웃 템플릿 변수(1215)는 각 요소(1112)가 콘텐트 원자들을 레이아웃하는 데 이용될 수 있는 레이아웃 템플릿(1106)(또는 레이아웃 템플릿들(1106)의 컬렉션)을 특정하게 한다. 콘텐트 원자(content atom)는 다수의 콘텐트 스트림들(1303)(예컨대, 텍스트, 피겨, 또는 이미지)로 구성되는 콘텐트 항목(1306)을 포함한다. 보다 구체적으로, 콘텐트 원자는 하나 이상의 요소들(1112) 또는 모두가 어떤 부모 콘텐트 항목(1306) 내의 단일 항목인 것으로 간주되는 하나 이상의 콘텐트 유형의 콘텐트 스트림들(1303)을 포함하는 콘텐트의 논리 그룹을 포함한다. 예를 들면, 요소(1112)는 텍스트, 피겨, 및 이미지를 포함하는 세로 막대(sidebar)를 나타낼 수 있다. 레이아웃 템플릿 변수(1215)를 통하여, 템플릿(1106)은 충분히 재귀적인 레이아웃을 지원할 수 있고, 따라서, 피겨/캡션 조합으로부터 콘텐트의 재귀적 포함(recurslve embedding of content)까지 모든 것을 지원할 수 있다.
템플릿(1106)의 제약 기반 관계들(1115)(예컨대, 때때로 "제약들(1115)"이라 불림)은 요소들(1112) 간의 관계들을 적어도 부분적으로 정의하는 데 이용될 수 있다. 템플릿(1106) 내의 각 요소(1112)의 크기 및 배치는, 함께 고려될 때, 방향성 비순환 그래프(directed acyclic graph)를 형성하는, 상호 종속 제약 기반 관계들(1115)의 세트를 평가함으로써 판정된다. 제약 기반 관계들(1115)은 제약 입력 변수들(1218) 및 다른 제약 변수들(1218, 1221)의 항으로 수학식에 의해 그 값들이 결정되는 제약 출력 변수들(1221)을 포함한다. 또한, 제약 기반 관계들(1115)은 제약 출력 변수들(1221)에 대한 값들을 계산할 때 그 값들이 사용될 수 있는 제약 내부 변수들(1224)을 포함한다. 숙련된 당업자는 이러한 유형의 구성이 "단방향 제약 시스템(one-way constraint system)"으로 알려져 있다는 것을 인지할 것이다. 그러나, 청구된 내용의 전형적인 실시예에서, 각 템플릿(1106)은 특정 레이아웃을 평가하기 위해 해결되어야 하는 제약들(1115)로서 레이아웃 요소들(112) 사이의 2차원 관계들을 인코딩한다.
제약 입력 변수들(1218)은 템플릿(1106)에게 그 템플릿(1106)이 사용될 컨텍스트에 관하여 지시한다. 예를 들면, 제약 입력 변수(1218)는 템플릿(1106)의 또는 템플릿(1106) 내의 요소(1112)의 폭과 높이 치수들을 지시할 수 있지만, 이에 제한되는 것은 아니다. 또한, 제약 입력 변수(1218)는 문서 콘텐트에 관한 사용자 지정 특성들(custom attributes)(예컨대, 템플릿 작성 도구(910)를 통하여 사용자에 의해 정의되는 특성들)을 포함할 수 있다. 청구된 내용의 양태들에서, 제약 시스템(도시 생략)은 제약 입력 변수들(1218) 및 제약 출력 변수들(1221)로서 이용될 수 있는 제약들의 풀(pool of constraints)에 의해 나타내어질 수 있다. 문서 콘텐트(904) 내에 사용자 지정 특성들이 존재하는 경우, 사용자 지정 특성들은 제약 시스템 내에서 추가 변수들로서 추가될 수 있다. 제약 출력 변수들(1221)은 각종 문서 출력 특성들을 나타내는데, 이들은 각 요소(1112)의 직사각형 경계 및 템플릿(1106)이 그 템플릿(1106) 내에 삽입될 콘텐트에 관하여 그것의 적합성을 표현하게 하는 템플릿(1106)의 스코어를 포함하지만, 이들에 제한되는 것은 아니다(아래에서 도 10을 참조하여 보다 상세히 설명됨).
템플릿(1106)의 전제 조건들(1109)은 문서의 특정 콘텐트에 대한 템플릿(1106)의 적합성을 적어도 부분적으로 특징화한다. 각 템플릿(1106)은 템플릿(1106)이 문서 콘텐트에 적용될 경우 언제 유효한지를 표현하기 위해 전제 조건들(1109)을 이용한다. 예를 들면, 템플릿(1106)은 문서 콘텐트에 성공적으로 적용될 수 있다면 유효할 수 있다. 숙련된 당업자는 어느 템플릿들(1106)이 유효하고 어느 템플릿들(1105)이 유효하지 않은지를 판정하기 위해 여러 가지 전제 조건들이 사용될 수 있다는 것을 인지할 것이다. 적응 격자 기반 문서 레이아웃 시스템(902)은 페이지네이션(아래에서 도 19를 참조하여 보다 상세히 설명됨) 동안에 전제 조건들(1109)을 이용한다. 전제 조건들(1109)은 하나 이상의 콘텐트 전제 조건 변수들(1203) 및/또는 하나 이상의 값 전제 조건 변수들(1206)을 포함할 수 있다. 콘텐트 전제 조건 변수(1203)는 템플릿(1106) 또는 템플릿(1106) 내의 요소(1112)를 적절히 채우기 위해 존재해야 하는 주어진 콘텐트 스트림(1303)으로부터의 콘텐트의 양을 나타낸다. 값 전제 조건 변수(1206)는 주어진 제약 변수(1218, 1221)가 속해야 하는 값의 범위를 나타낸다. 예를 들면, 콘텐트 전제 조건 변수(1203) 및 값 전제 조건 변수(1206)는 문서 콘텐트가 디스플레이를 위해 이용 가능한 피겨를 정확히 2개 포함할 경우 그리고 문서 콘텐트의 페이지 치수들이 표준 레터(standard letter) 치수와 A4 페이지 치수 사이의 어딘가에 속할 경우 특정 템플릿(1106)이 유효하다는 것을 나타낼 수 있다.
도 13은 청구된 내용의 전형적인 실시예에 따른 콘텐트 스트림들(1303)을 포함하는 문서 콘텐트(904)의 블록도 표현을 디스플레이한다. 문서 콘텐트(904)는 본 발명 내에서 개별 콘텐트 스트림들(1303)의 세트로서 나타내어지고, 콘텐트 스트림들(1303) 각각은 순차적으로 레이아웃되는 콘텐트를 포함한다. 콘텐트 스트림들(1303)은 문서의 상이한, 논리적으로 독립적인 부분들은 나타내는데, 이들은 본문 텍스트, 세로 막대, 피겨, 뽑아낸 인용문(pull quotes), 및 포토 크레디트(photo credit)를 포함하지만, 이에 한정되는 것은 아니다. 콘텐트 스트림들(1303)은 아래에서 도 14를 참조하여 더 충분히 설명되는 콘텐트 항목들(1306)을 포함한다. 생략 부호에 의해 예시된 바와 같이, 문서 콘텐트(904)는 도 13에 도시된 콘텐트 스트림들(1303A, 1303B, 1303Z)의 수에 한정되지 않는다. 유사하게 생략 부호는 도 13에 도시된 콘텐트 항목들(1306A1, 1306A2, 1306AN)의 수에 한정되지 않는다.
도 14는 청구된 내용의 전형적인 실시예에 따른 콘텐트 항목들(1306)을 포함하는 콘텐트 스트림의 블록도 표현을 디스플레이한다. 도 13을 참조하여 위에서 설명한 바와 같이, 콘텐트 스트림들(1303)은 콘텐트 항목들(1306)을 포함한다. 콘텐트 항목들(1306)은, 텍스트, 이미지, 오디오, 비디오, 및 기타 적당한 콘텐트 유형들을 포함하지만, 이에 한정되는 것은 아니다. 각 콘텐트 항목(1306)은 구조를 나타내기 위해 표준 마크업(예컨대, XML)과 연관된다. 표준 마크업 외에도, 각 콘텐트 항목(1306)은 그 콘텐트 항목(1306)이 저레벨 엔진(502) 및 템플릿들(1106)에 의해 취급되는 방법을 변경하는 사용자 지정 특성들(1409)로 주석 표시될 수 있다. 예를 들면, 이미지를 나타내는 콘텐트 항목(1306)은 문서 레이아웃 내에서 그 이미지의 중요성을 나타내는 특성(1409)을 가질 수 있다. 따라서, 템플릿(1106) 내의 콘텐트 항목(1306)을 이용하는 저레벨 엔진(502)은 그 특성 값을 확인하여 최종 레이아웃에서 그 이미지를 얼마나 크게 만들지를 판정할 수 있다. 특성 "A1A"(1409A1A)와 특성 "A1Z"(1409A1Z) 사이의 생략 부호는 콘텐트 항목 "A1"(1306A1) 내에 복수의 특성들(1409)이 존재할 수 있다는 것을 예시하고, 따라서, 콘텐트 항목 "A1"(1306A1)은 도 14에 도시된 2개의 특성(1409A1A, 1409A1Z)에 한정되지 않는다. 유사하게, 특성 "ANA"(1409ANA)와 특성 "ANZ"(1409ANZ) 사이의 생략 부호는 콘텐트 항목 "AN"(1306AN) 내에 복수의 특성들(1409)이 존재할 수 있다는 것을 예시하고, 따라서, 콘텐트 항목 "AN"(1306AN)은 도 14에 도시된 2개의 특성(1409ANA, 1409ANZ)에 한정되지 않는다.
청구된 내용의 전형적인 실시예에서, 텍스트 콘텐트 항목들(1306A1)은 문서 콘텐트(904) 내의 텍스트의 스타일링을 특정하는 스타일 식별자들(1412A1A, 1412A1Z)을 포함할 수 있다. 스타일 식별자들(1412)은 전형적으로 스타일시트 언어에 의해 나타내어지는데, 그 스타일시트 언어는 CSS(cascading style sheets) 또는 XSL(extensible style language)를 포함하지만, 이에 한정되는 것은 아니다. 숙련된 당업자는 스타일 시트 언어가 사용자가 문서 내에서 얼마나 상이한 텍스트 요소들이 나타날지를 정의할 수 있게 한다(예컨대, 폰트, 폰트 스타일, 및 폰트 크기). 따라서, 스타일 식별자들(1412)은 스타일 시트 저장 유닛(906)에 저장되어 있는 별도의 스타일시트 파일 내의 포매팅 규칙들과 연관될 수 있다. 스타일 식별자 "A1A"(1412A1A)와 스타일 식별자 "A1Z"(1412A1Z) 사이의 생략 부호는 콘텐트 항목 "A1"(1306A1) 내에 복수의 스타일 식별자들(1412)이 존재할 수 있다는 것을 예시하고, 따라서, 콘텐트 항목 "A1"(1306A1)은 도 14에 도시된 2개의 스타일 식별자(1412A1A, 1412A1Z)에 한정되지 않는다. 유사하게, 스타일 식별자 "ANA"(1412ANA)와 스타일 식별자 "ANZ"(1412ANZ) 사이의 생략 부호는 콘텐트 항목 "AN"(1306AN) 내에 복수의 스타일 식별자들(1412)이 존재할 수 있다는 것을 예시하고, 따라서, 콘텐트 항목 "AN"(1306AN)은 도 14에 도시된 2개의 스타일 식별자(1412ANA, 1412ANZ)에 한정되지 않는다.
콘텐트 항목들(1306)은 또한 임의의 콘텐트의 다수의 버전들(1306A2A, 1306A2B, 1306A2Z)을 포함하도록 인코딩될 수도 있다. 서로 다른 콘텐트 항목 버전들(1306A2A, 1306A2B, 1306A2Z) 각각은 <multi> 태그(1406) 안에 패키징된다. 문서 레이아웃 중에, 적응 격자 기반 문서 레이아웃 시스템(902)은 템플릿(1106)으로 페이지를 포맷할 때 사용하기 위해 그 버전들 중 하나를 선택한다. 적응 격자 기반 레이아웃 시스템(902)을 보조하기 위해, 상이한 콘텐트 항목 버전들(1306A2A, 1306A2B, 1306A2Z) 각각은 각각의 특정 콘텐트 항목 버전(1306A2A, 1306A2B, 1306A2Z)의 가장 적절한 사용을 제안하는 특성들(1409)을 포함할 수 있다. 예를 들면, 콘텐트 항목 "A2"의 제1 버전(1306A2A)은 그 콘텐트 항목의 제1 버전(1306A2A)이 "요약(summary)" 섹션에서 최적으로 사용되는 것을 나타낼 수 있고, 콘텐트 항목 "A2"의 제2 버전(1306A2B)은 그 콘텐트 항목의 제2 버전(1306A2B)이 세로 막대(sidebar)에서 최적으로 사용되는 것을 나타낼 수 있지만, 이에 한정되는 것은 아니다. 템플릿(1106)은 그 템플릿(1106)이 문서 콘텐트를 어떻게 포맷하려고 하는지에 기초하여 적절한 콘텐트 항목 버전(1306A2A, 1306A2B, 1306A2Z)을 선택할 수 있다. 만일 콘텐트 항목(1306)의 상이한 버전들을 정의하는 특성들(1409)이 존재하지 않으면, 적응 격자 기반 문서 레이아웃 시스템(902)은 현 페이지 또는 문서의 포맷에 대해 최적으로 작용하는 버전을 자유로이 선택한다. 콘텐트 항목 "A2"의 제2 버전(1306A2B)과 콘텐트 항목 "A2"의 n번째 버전(1306A2Z) 사이의 생략 부호는 <multi> 태그(1406) 내에 복수의 콘텐트 항목(1306) 버전들이 존재할 수 있다는 것을 예시하고, 따라서, <multi> 태그(1406)는 도 14에 도시된 3개의 콘텐트 항목 버전들(1306A2A, 1306A2B, 1306A2Z)에 한정되지 않는다.
콘텐트 스트림들(1303A3A, 1303A3B, 1303A3Z)은 또한 콘텐트 스트림들(1303A3A, 1303A3B, 1303A3Z)의 컬렉션을 부모 콘텐트 항목(1306A3) 내의 콘텐트 원자로서 함께 그룹화하는 <atom> 태그를 이용하여 부모 콘텐트 항목(1306A3) 내에 계층적으로 중첩(nest)될 수도 있다. 그 후 콘텐트 스트림들(1303A3A, 1303A3B, 1303A3Z)의 컬렉션은 단일 콘텐트 항목(1306A3)으로서 취급된다. 세로 막대와 같은 문서 요소들은 본질적으로 다수의 문서 요소들(예컨대, 텍스트, 피겨, 캡션, 및 바닥글(footer))에 의해 나타내어진다. <atom> 태그는 다수의 콘텐트 스트림들(1303)이 문서 레이아웃을 위해 콘텐트의 하나의 단일 항목으로서 취급되도록 허용한다. 예를 들면, <atom> 태그는 부모 "세로 막대(sidebar)" 콘텐트 항목(1306) 내에 "제목(title)" 콘텐트 스트림(1303), "피겨(figure)" 콘텐트 스트림(1303), "피겨 캡션(figure caption)" 콘텐트 스트림(1303), "설명 텍스트(descriptive text)" 콘텐트 스트림(1303), 및 "바닥글(footer)" 콘텐트 스트림(1303)을 그룹화할 수 있지만, 이에 한정되는 것은 아니다. 콘텐트 스트림(1303A3B)과 콘텐트 스트림(1303A3Z) 사이의 생략 부호는 부모 콘텐트 항목(1306A3) 내에 복수의 콘텐트 스트림들(1303)이 존재할 수 있다는 것을 예시하고, 따라서, 부모 콘텐트 항목(1306A3)은 도 14에 도시된 3개의 콘텐트 스트림들(1303A3A, 1303A3B, 1303A3Z)에 한정되지 않는다.
도 15A-15B는 청구된 내용의 전형적인 실시예에 따른 템플릿들(1106)에 문서 콘텐트(904)를 적용하는 방법(1500)의 순서도 표현을 디스플레이한다. 저레벨 엔진(502)은 페이지네이터(602)로부터 수신된 문서 콘텐트(904)를 템플릿 저장 유닛(908)로부터의 템플릿들(1106) 및 스타일 시트 저장 유닛(906)으로부터의 스타일 시트들을 결합한다. 그 결과는 문서의 레이아웃 스타일을 정의하는 잠재적인 페이지 레이아웃들의 컬렉션이다.
단계 1501에서 시작한 후에, 저레벨 엔진(502)은 단계 1503으로 진행하고 거기서 저레벨 엔진(502)은 문서 콘텐트(904)를 이용하여 추가 템플릿들(1106)이 평가될 필요가 있는지를 판정한다. 처음에는, 템플릿 저장 유닛(908) 내의 템플릿들(1106) 중 어느 것도 평가되어 있지 않을 것이다. 그러나, 단계 1503이 반복될 때, 저레벨 엔진(502)은 모든 템플릿들(1106)이 고려될 때까지 템플릿 저장 유닛(908) 내에서 이용 가능한 다른 템플릿들(1106)을 고려할 것이다. 대안적으로, 저레벨 엔진(502)은 템플릿 저장 유닛(908) 내의 모든 템플릿들(1106) 대신에, 단계 1503 전에 페이지네이터(602)에 의해 제공된 데이터 구조(예컨대, 어레이 또는 벡터)(도시되지 않음) 내의 모든 템플릿들(1106)을 평가한다. 만일 단계 1503에 서, 저레벨 엔진(502)이 추가 템플릿들(1106)이 평가될 필요가 없다고 판정하면, 저레벨 엔진(502)은 후술되는 단계 1527로 진행한다. 그러나, 만일 단계 1503에서, 저레벨 엔진(502)이 추가 템플릿들(1106)이 평가될 필요가 있다고 판정하면, 저레벨 엔진(502)은 단계 1506으로 진행하고 거기서 현재 고려되고 있는 템플릿(1106)(예컨대, 여기서 "현 템플릿(current template)(1106)"이라고도 불림)의 전제 조건들(1109)이 문서 콘텐트(904)에 대하여 평가된다. 다음으로, 단계 1509에서, 저레벨 엔진(502)은 현 템플릿(1106)이 고려되고 있는 문서 콘텐트(904)에 대하여 유효한지를 판정한다.
만일 단계 1509에서, 저레벨 엔진(502)이 현 템플릿(1106)이 고려되고 있는 문서 콘텐트(904)에 대하여 유효하지 않다고 판정하면, 저레벨 엔진(502)은 상술한 단계 1503으로 진행한다. 그러나, 만일 단계 1509에서, 저레벨 엔진(502)이 현 템플릿(1106)이 고려되고 있는 문서 콘텐트(904)에 대하여 유효하다고 판정하면, 저레벨 엔진(502)은 단계 1512로 진행하고 거기서 저레벨 엔진(502)은 현 템플릿의 입력 변수들을 설정하고 이 값들을 단순 그리디 로컬 전파(simple greedy local propagation)를 이용하여 현 템플릿의 제약 그래프를 통하여 앞으로 전파함으로써 템플릿(1106)의 각 요소(1112)의 크기 및 위치를 판정한다.
그 후, 단계 1515에서, 저레벨 엔진(502)은 템플릿(1106)에 의해 생성될 그리고 문서 콘텐트(904)가 유입될 레이아웃 페이지의 2차원 영역들을 계산한다. 또한, 저레벨 엔진(502)은 요소들(1112) 간의 임의의 겹침에 따라서 또는 요소 z-오더 배치 변수들(1212)에 기초하여 영역들을 삭감(trim down)한다. 다음으로, 단계 1518에서, 저레벨 엔진(502)은 문서 콘텐트(904)를 결정된 영역들의 각각에 유입한다. 그 후 저레벨 엔진(502)은 단계 1521로 진행하고 거기서 저레벨 엔진(502)은 문서 콘텐트(904)가 템플릿(1106)에 얼마나 잘 맞는지에 기초하여 템플릿(1106)에 대한 템플릿 스코어를 산출한다(아래에서 도 10을 참조하여 보다 상세히 설명됨). 다음으로, 단계 1524에서, 저레벨 엔진(502)은 유효 템플릿들(1106)의 세트 또는 시퀀스에 템플릿들(1106)을 추가한다. 그 후 저레벨 엔진(502)은 상술한 단계 1503으로 진행한다.
상술한 바와 같이, 만일 단계 103에서 저레벨 엔진(502)이 추가 템플릿들(1106)이 평가될 필요가 없다고 판정하면, 저레벨 엔진(502)은 단계 1527로 진행하고 거기서 저레벨 엔진(502)은 유효 템플릿들(1106)의 세트가 비어 있는지를 판정한다. 만일 단계 1527에서 저레벨 엔진(502)이 유효 템플릿들(1106)의 세트가 비어 있다고 판정하면, 저레벨 엔진(502)은 단계 1536으로 진행하고 거기서 저레벨 엔진(502)은 문서 콘텐트(904)에 대하여 유효한 템플릿들(1105)의 세트가 존재하지 않는다는 오류를 생성한다. 그 후 저레벨 엔진(502)은 단계 1533에서 방법(1500)에 따라서 동작을 종료한다. 그러나, 만일 단계 1527에서 저레벨 엔진(502)이 유효 템플릿들(1106)의 세트가 존재한다고 판정하면, 저레벨 엔진(502)은 단계 1530으로 진행하고 거기서 저레벨 엔진(502)은 유효 템플릿들(1106)의 세트 및 대응하는 스코어들을 페이지네이터(602)에 보낸다. 그 후 저레벨 엔진(502)은 단계 1533에서 방법(1500)에 따라서 동작을 종료한다.
도 16A-16C는 청구된 내용의 전형적인 실시예에 따른 문서 레이아웃 내의 요소들(1112) 내로 콘텐트를 유입하는 방법(1600)의 순서도 표현을 디스플레이한다. 저레벨 엔진(502)은 콘텐트 유형에 따라서 요소 영역들 내로의 콘텐트의 흐름을 제어한다. 일반적으로, 콘텐트 유형은, 이미지, 텍스트, 인라인 피겨, 및 미디어를 포함하지만, 이에 한정되는 것은 아니다.
단계 1601에서 시작한 후, 저레벨 엔진(502)은 단계 1603으로 진행하고 거기서 저레벨 엔진(502)은 콘텐트 유형이 이미지인지를 판정한다. 만일 단계 1603에서 저레벨 엔진(502)이 콘텐트 유형이 이미지라고 판정하면, 저레벨 엔진(502)은 단계 1606으로 진행하고 거기서 저레벨 엔진(502)은 그 이미지를 적절한 요소(1112)의 경계 영역(bounding region)에 맞도록 크기 조정한다. 다음으로, 단계 1609에서, 저레벨 엔진(502)은 요소(1112)의 콘텐트 영역에 의해 잘린 이미지를 디스플레이한다. 그 후 저레벨 엔진(502)은 단계 1618에서 방법(1600)에 따라서 동작을 종료한다.
그러나, 만일 단계 1603에서 저레벨 엔진(502)이 콘텐트 유형이 이미지가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1612로 진행하고 거기서 저레벨 엔진(502)은 콘텐트 유형이 텍스트인지를 판정한다. 만일 단계 1612에서 저레벨 엔진(502)이 콘텐트 유형이 텍스트라고 판정하면, 저레벨 엔진(502)은 단계 1615로 진행하고 거기서 저레벨 엔진(502)은 줄 바꿈 알고리즘을 이용하여 텍스트가 요소(1112)의 경계 영역 내로 유입하도록 한다. 줄 바꿈 알고리즘은 누스(Knuth) 및 플라스(Plass)의 최적 줄 바꿈 알고리즘 등을 포함하지만 이에 한정되는 것은 아니다. 그 후 저레벨 엔진(502)은 단계 1618에서 방법(1600)에 따라서 동작을 종료한다.
그러나, 만일 단계 1612에서 저레벨 엔진(502)이 콘텐트 유형이 텍스트가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1621로 진행하고 거기서 저레벨 엔진(502)은 텍스트 유형이 인라인 피겨(예컨대, 텍스트의 흐름 내에서 나타나는 피겨들)인지를 판정한다. 만일 단계 1621에서 저레벨 엔진(502)이 콘텐트 유형이 인라인 피겨라고 판정하면, 저레벨 엔진(502)은 단계 1624로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)의 경계 영역 내에 피겨를 디스플레이할 공간이 있는지를 판정한다. 만일 단계 1624에서 저레벨 엔진(502)이 요소(1112)의 경계 영역 내에 피겨를 디스플레이할 공간이 있다고 판정하면, 저레벨 엔진(502)은 단계 1630으로 진행하고 거기서 저레벨 엔진(502)은 그 피겨를 특정 참조 위치에 배치하고 그 피겨를 콘텐트(1112)의 전체 열을 채우도록 크기 조정(resize)한다. 그 후 저레벨 엔진(502)은 단계 1633에서 방법(1600)에 따라서 동작을 종료한다. 그렇지 않고, 저레벨 엔진(502)이 단계 1624에서 요소(1112)의 경계 영역이 피겨를 디스플레이하기에 충분한 크기가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1627로 진행하고 거기서 저레벨 엔진(502)은 피겨를 흐름의 다음 요소(1112)에 디스플레이하고 그 피겨를 다음 요소(1112)의 전체 열을 채우도록 크기 조정하다. 그 후 저레벨 엔진(502)은 단계 1633에서 방법(1600)에 따라서 동작을 종료한다.
그러나, 만일 단계 1621에서 저레벨 엔진(502)이 콘텐트 유형이 인라인 피겨가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1636으로 진행하고 거기서 저레벨 엔진(502)은 콘텐트 유형이 미디어인지를 판정한다. 만일 단계 1636에서 저레벨 엔진(502)이 콘텐트 유형이 미디어라고 판정하면, 저레벨 엔진(502)은 단계 1642로 진행하고 거기서 저레벨 엔진(502)은 미디어 유형을 특정 참조 위치에 포함(embed)시킨다. 그 후 저레벨 엔진(502)은 단계 1645에서 방법(1600)에 따라서 동작을 종료한다. 그렇지 않고, 만일 저레벨 엔진(502)이 단계 1636에서 콘텐트 유형이 미디어가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1639로 진행하고 거기서 저레벨 엔진(502)은 유효하지 않은 콘텐트 유형을 나타내는 오류를 생성한다. 그 후 저레벨 엔진(502)은 단계 1645에서 방법(1600)에 따라서 동작을 종료한다.
도 17A-l7C는 청구된 내용의 전형적인 실시예에 따른 문서 레이아운 내의 요소들(1112)을 셀프-사이징하는 방법(1700)의 순서도 표현을 디스플레이한다. 저레벨 엔진(502)은 문서 콘텐트(904)에 맞도록 그의 높이를 자동으로 조정하는 요소들(1112)을 지원한다. 요소들(1112)의 자동 크기 조정은 콘텐트 유형에 의존한다.
단계 1701에서 시작한 후, 저레벨 엔진(502)은 단계 1703으로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)가 이미지 요소인지를 판정한다. 만일 단계 1703에서 저레벨 엔진(502)이 요소(1112)가 이미지 요소라고 판정하면, 저레벨 엔진(502)은 단계 1706으로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)에 이미지의 픽셀 치수들을 제공하기 위해 요소(1112)와 연관된 제약 변수들(1218, 1221)을 설정한다. 다음으로, 단계 1709에서, 저레벨 엔진(502)은 픽셀 치수들로부터 이미지의 가로 세로 비율을 계산하여 요소(1112)의 적절한 높이 및 폭을 판정한다. 그 후 저레벨 엔진(502)은 단계 1712에서 방법(1700)에 따라서 동작을 종료한다.
그러나, 만일 단계 1703에서 저레벨 엔진(502)이 요소(1112)가 이미지 요소가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1715로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)가 텍스트 요소인지를 판정한다. 만일 단계 1715에서 저레벨 엔진(502)이 요소(1112)가 텍스트 요소라고 판정하면, 저레벨 엔진(502)은 단계 1718로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)가 미리 정해진 마크(mark) 또는 특성을 포함하는지를 판정한다. 그 마크 또는 특성으로는, "resize-to-content" 태그 등이 있지만, 이에 한정되는 것은 아니다. 만일 단계 1718에서 저레벨 엔진(502)이 "resize-to-content" 태그로 마크되어 있지 않다고 판정하면, 요소(1112)의 크기 조정이 필요하지 않기 때문에, 저레벨 엔진(502)은 단계 1712에서 방법(1700)에 따라서 동작을 종료한다.
만일 저레벨 엔진(502)이 단계 1718에서 요소(1112)가 "resize-to-content" 태그로 마크되어 있다고 판정하면, 저레벨 엔진(502)은 단계 1721로 진행하고 거기서 저레벨 엔진502)은 요소의 높이 변수를 최대 허용 값으로 설정한다. 다음으로, 단계 1724에서, 저레벨 엔진(502)은 요소(1112)가 텍스트로 완전히 채워져 있는지를 판정한다. 만일 단계 1724에서 저레벨 엔진(502)이 요소(1112)가 텍스트로 완전히 채워져 있다고 판정하면, 요소(1112)의 크기 조정이 필요하지 않기 때문에, 저레벨 엔진(502)은 단계 1730에서 방법(1700)에 따라서 동작을 종료한다. 그러나, 만일 단계 1724에서 저레벨 엔진(502)이 요소(1112)가 텍스트로 완전히 채워져 있지 않다고 판정하면, 저레벨 엔진(502)은 단계 1727로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)의 높이를 텍스트의 실제 높이로 리셋한다. 그 후 저레벨 엔진(502)은 단계 1730에서 방법(1700)에 따라서 동작을 종료한다.
그러나, 만일 저레벨 엔진(502)이 단계 1715에서 요소(1112)가 텍스트 요소가 아니라고 판정하면, 저레벨 엔진(502)은 단계 1727로 진행하고 거기서 저레벨 엔진(502)은 요소(1112)가 레이아웃을 위해 템플릿들(1116)을 필요로 하는 복합 요소인지를 판정한다. 콘텐트 원자는, 함께 취해져서, 원자 유닛이라고 간주되는 2개 이상의 콘텐트를 나타낸다. 예를 들면, 그림 및 대응하는 캡션은 개념적으로 단일의 "캡션 피겨(captioned figure)"로서 함께 그룹화된다. 따라서, 복합 요소는 콘텐트 원자를 수용할 수 있는 템플릿 내의 요소이다. 콘텐트 원자 내에 개별 하위-콘텐트들을 레이아웃하기 위하여, 복합 요소는 레이아웃 페이지 상에 그 콘텐트 원자의 개별 하위 부분들(subparts)을 배열하기 위해 이용될 수 있는 개별 하위-템플릿을 특정한다. 만일 단계 1727에서 저레벨 엔진(502)이 요소(1112)가 레이아웃을 위해 템플릿들(1106)을 필요로 하는 복합 요소가 아니라고 판정하면, 크기 조정이 필요하지 않기 때문에 저레벨 엔진(502)은 단계 1730에서 방법(1700)에 따라서 동작을 종료한다.
그러나, 만일 단계 1727에서 저레벨 엔진(502)이 요소(1112)가 레이아웃을 위해 템플릿들(1106)을 필요로 하는 복합 요소라고 판정하면, 저레벨 엔진(502)은 단계 1733으로 진행하고 거기서 저레벨 엔진(502)은 요구되는 템플릿들(1106)을 이용하여 요소(1112)를 레이아웃한다. 복합 요소는 다수의 콘텐트 항목들(1306) 또는 다수의 콘텐트 스트림들(1313)을 포함할 수 있고, 이들에는 콘텐트 원자(1306A3) 등이 있지만, 이에 한정되는 것은 아니다. 그 후, 저레벨 엔진(502)은 단계 1736으로 진행하고 거기서 저레벨 엔진(502)은 특수 출력 변수(1221)를 이용하여 템플릿(1106) 내의 요소(1112)의 최종 높이를 설정한다. 그 후 저레벨 엔진(502)은 단계 1739에서 방법(1700)에 따라서 동작을 종료한다.
도 18은 청구된 내용의 전형적인 실시예에 따른 문서 콘텐트(904)가 템플릿(1106)에 얼마나 잘 맞는지에 기초하여 템플릿(1106)의 스코어를 매기는 방법(1800)의 순서도 표현을 디스플레이한다. 문서 콘텐트(904)를 레이아웃하는 데 이용되는 각 템플릿(1106)에 대하여, 저레벨 엔진(502)은 콘텐트가 템플릿(1106)에 얼마나 잘 맞는지에 기초하여 스코어를 산출한다. 일단 저레벨 엔진(502)이 모든 잠재적 템플릿들(1106)에 대한 스코어를 산출하면, 저레벨 엔진(502)은 그 스코어들을 페이지네이터(602)에 보고한다. 페이지네이터(6D2)는 그 스코어들을, 콘텐트의 이전 및 후속 페이지들에 대한 템플릿 스코어들과 함께 이용하여, 모든 문서 콘텐트(904)를 페이지네이팅하는 데 이용할 템플릿들(1106)의 최적 시퀀스를 산출할 수 있다.
단계 1801에서 시작한 후에, 저레벨 엔진(502)은 단계 1803으로 진행하고 거기서 저레벨 엔진(502)은 템플릿(1106)의 템플릿 스코어를 포함하는 제약 출력 변수(1221)를 평가한다. 그 후 저레벨 엔진(502)은 단계 1806으로 진행하고 거기서 저레벨 엔진(502)은 템플릿(1106)을 적용한 후 페이지 레이아웃 내의 창(windows) 및 고아(orphans)의 수를 판정한다. 그 후, 단계 1809에서, 저레벨 엔진(502)은 콘텐트가 템플릿(1106)에 얼마나 잘 맞는지에 대한 스코어를 산출하고, 품질 스코어는 그 템플릿 스코어 변수 및 페이지 레이아웃 내의 창 및 고아의 수에 기초한다. 저레벨 엔진(502)은 단계 1812로 진행하고 거기서 저레벨 엔진(502)은 페이지네이터(602)에 템플릿(1106)의 산출된 스코어를 제공하고, 페이지네이터(602)는 그것을 템플릿들(1106)의 최종 시퀀스의 산출 시에 이용한다. 그 후 페이지네이터(602)는 단계 1815에서 방법(1800)에 따라서 동작을 종료한다.
페이지네이터(602)는 템플릿들(1106)의 시퀀스 및 그 시퀀스 내의 각 템플릿(1106)에의 문서 콘텐트(904)의 매핑을 생성하고 저레벨 엔진(502)은 그것을 전체 문서를 디스플레이하는 데 이용할 수 있다. 청구된 내용의 실시예에서, 적응 격자 기반 문서 시스템(902)은 상이한 애플리케이션들을 위하여 다수의 페이지네이션 알고리즘들을 이용한다. 따라서, 적응 격자 기반 문서 시스템(902)은 대화식 적응(interactive adaption)을 위한 유효 페이지네이션을 신속히 생성하는 제1 페이지네이터(602) 및 최적의 페이지네이션을 생성하지만 보다 많은 동작 시간을 필요로 하는 제2 페이지네이터(602)를 포함할 수 있다. 제1 페이지네이터(602)는 항상 각 페이지에 대하여 문서 내의 현 위치에서 콘텐트를 수용할 제1 템플릿(1106)을 이용하는 "그리디(greedy)" 알고리즘을 이용할 수도 있고 또는 선택의 전체적 결과(global consequences)(예컨대, 전체적 스코어링)를 평가하지 않고 시퀀스 내의 각 위치에서 단일 최적 템플릿(1106)을 선택할 수도 있다. 제2 페이지네이터(602)는 문서 콘텐트(904)의 보다 작은 부분들(예컨대, "창들(wlndowss)")에 대하여 일련의 보다 작은 최적화 프로세스들을 실행함으로써, "그리디" 페이지네이션보다는 우수하지만, 최적으로 보증되지는 않는, 근사 최적 페이지네이션(approximate optimal paginations)을 생성하는 것을 포함하는 기법들을 이용할 수도 있지만, 상기 기법에 한정되는 것은 아니다.
도 19A-l9D는 청구된 내웅의 전형적인 실시예에 따른 문서 콘텐트를 적응 격자 기반 문서 레이아웃으로 최적으로 페이지네이트(paginating)하는 방법(1900)의 순서도 표현을 디스플레이한다. 최적의 페이지네이션을 찾아내기 위하여, 페이지네이터(602)는 유효 템플릿들(1106)의 각 시퀀스의 유효성을 측정해야 하고, 그 측정치는 체계적인 또는 발견적인(heuristic) 검색에 의해 또는 제약 최적화에 의해 최대화된다. 최적화 페이지네이터(602)는 템플릿들(1106)의 시퀀스 및 각 템플릿(1105)에의 콘텐트의 매핑을 생성하고, 그것은 품질의 어떤 측정치를 최대화한다. 예를 들면, 그러한 하나의 측정치는 텍스트를 통독하고 또한 텍스트에 의해 참조되는 임의의 추가 콘텐트를 참조하기 위해 요구될 페이지 넘김의 총 수를 카운트하는 "전체 페이지 넘김(total page turns)" 메트릭을 포함한다. 청구된 내용의 전형적인 실시예에서, 유효 템플릿들(1106)의 각 시퀀스의 유효성의 스코어를 매기는 데 이용되는 메트릭은 페이지 넘김의 총 수와 함께 페이지의 외관의 품질을 반영하는 다른 측정치들(예컨대, 빈 공간, 미적 외관(aesthetic look), 가동성(workability), 또는 읽힘성(readability))의 사용을 포함한다.
하위 문제들(예컨대, 일련의 새로운 템플릿들(1106))을 평가하는 데 이용되는 기본 동적 프로그래밍 알고리즘은 하위 문제들의 시퀀스들의 스코어를 매기는 가늠자(hindsight)에 의지하므로, 청구된 내용의 일 양태는 현 하위 문제(예컨대, 전향적인)의 모든 가능한 종점들(endpoints)을 산출함으로써 유효 페이지들에 대해서만 평가가 수행되도록 알고리즘을 재구성한다. 청구된 내용의 일 양태는 새로운 하위 문제가 고려될 때, 솔루션에서 아마도 그것에 선행할 수 있는 모든 하위 문제들이 이미 해결되어 있고, 최적의 선행자를 가리키는 항목이 데이터 테이블에 있도록 보장한다. 따라서, 만일 하위 문제에 도달할 때 그것에 대한 항목이 데이터 테이블에 존재하지 않으면, 그 하위 문제는 아무런 계산 없이 무시(pass over)될 수 있다.
또한, 청구된 내용의 일 실시예는 데이터 테이블에 여분의 치수들을 추가하고 알고리즘에 추가의 중첩된 루프들(nested loops)을 추가함으로써 추가의 콘텐트 스트림들(1303)을 처리하도록 용이하게 수정될 수 있다. 옵션인 콘텐트 스트림들(1303)은 또한 옵션인 콘텐트 스트림들(1303)으로부터의 콘텐트를 디스플레이하는 템플릿들(1106)을 이용 가능하게 함으로써 추가의 프로그래밍 없이 처리될 수도 있다. 페이지네이터(602)는 옵션인 콘텐트 스트림들(1303)이 최적의 페이지네이션을 개선할 때마다 그 옵션인 콘텐트 스트림들(1303)의 콘텐트 항목들(1306)을 포함한다. 그러한 옵션인 콘텐트 스트림들(1303) 및 옵션인 콘텐트 스트림들(1303)을 이용하는 템플릿들(1106)은 페이지네이션 품질을 대단히 개선할 수 있다.
청구된 내용의 다양한 양태들의 성능은 어떤 임계값(예컨대, 여기서는 때때로 "가지치기 임계값(pruning threshold)"이라 불림)보다 나쁜 품질 스코어를 갖는 데이터 테이블로부터 부분적인 솔루션들(예컨대, 이미 수용 가능한 것으로 확인된 하위 문제들)을 잘라냄으로써 더욱 개선된다. 비교적 적은 수의 수용 가능한 솔루션들이 존재하기 때문에, 이러한 가지치기는 하위 문제 시퀀스의 목록을 가장 최적으로 좁히는 데 도움을 준다. 예를 들면, 보수적인 가지치기 전략(conservative pruning strategy)은 가지치기 임계값으로서 "최초 적합" 솔루션(예컨대, "그리디(greedy)" 솔루션)으로부터 생기는 품질 스코어의 이용을 포함하지만, 이에 한정되는 것은 아니다. 그러한 보수적인 가지치기 전략의 이용은 전형적으로 페이지네이션 프로세스의 상당한 속도 증진을 제공하고 솔루션이 항상 발견되도록 보장한다. 대안적으로, 낙관적인 가지치기 전략(optimistic pruning strategy)은 대략 완벽에 가까운 임계값(approximate, near-perfect threshold)을 선택하고, 솔루션이 발견되지 않으면 그 임계값을 반복하여 변경한다. 템플릿 저장 유닛(908)에 상당한 수의 템플릿들(1106)이 존재하는 경우, 완벽에 가까운 솔루션이 존재할 가능성이 높고, 따라서, 낙관적인 가지치기 전략은 보다 유효하게 된다.
데이터 테이블 내의 항목들은 문서 내의 위치들(예컨대, 현재 처리되고 있는 페이지의 종점들)을 나타낸다. 또한, 데이터 테이블 내의 항목은, 테이블 내의 항목의 인덱스 값에 의해 결정될 수 있는, 문서의 다양한 콘텐트 스트림들(1303) 내의 주어진 위치에서 종료하는 지금까지 발견된 최적의 페이지네이션을 나타낸다. 테이블 항목은, 그 위치에서 종료하는 최적의 부분적 솔루션 내의 선행 페이지의 테이블 내의 위치(및, 따라서, 문서 내의 위치), 및 마지막 페이지(the last page)(예컨대, 이전 테이블 항목과 현재 처리되고 있는 테이블 항목 사이의 페이지)를 렌더링하는 데 이용된 템플릿(1106)을 포함하지만, 이에 한정되는 것은 아니다.
청구된 내용의 실시예들에 의해 이용되는 프로세스의 가장 바깥쪽 루프는 테이블을 통하여 가로지르고, 진행하면서 점점 더 큰 (부분적) 솔루션들 또는 하위 문제들을 평가한다. 루프의 각 반복은 고려중인 현 종점 뒤에 올 수 있는 페이지들의 다음 세트(예컨대, 페이지는 템플릿(1106) 및 콘텐트의 선택이고; 상이한 양의 텍스트, 상이한 이미지 버전 등을 갖는 단일 템플릿(1106)에 대하여 다수의 결과들이 존재할 수 있다)를 찾아내기 위해 저레벨 엔진(502)을 호출한다. 결과의 페이지들의 세트는 다음 페이지에 대한 종점들의 세트를 생성하고, 그 후 그것들은 페이지네이터(602)에 의해 데이터 테이블 내로 전방으로 전파된다(예컨대, 새로운 항목이 보다 나은 전체적 스코어를 갖는다면 기존의 항목들을 대체한다).
예를 들면, 도 19A-l9D에서 설명된 방법(1900)은 표 1에 제공된 의사 코드로 나타내어질 수 있지만, 이에 한정되는 것은 아니다.
Figure 112008024340016-PCT00007
Figure 112008024340016-PCT00008
단계 1901에서 시작한 후, 페이지네이터(602)는 단계 1903으로 진행하고, 거기서 페이지네이터(602)는 최적의 페이지네이션을 위한 가지치기 임계값을 설정한다. 숙련된 당업자라면 위에서 설명된 기법들을 포함하여, 다양한 방법으로 임계값이 결정될 수 있다는 것을 알 것이다.
다음으로, 단계 1906에서, 페이지네이터(602)는 문서의 제1 페이지의 시작을 나타내는 단일 종점으로 빈 데이터 테이블을 초기화한다(예컨대, 문서의 시작을 나타내기 위해 위치 (0, 0)에 하나의 항목을 배치한다). 그 후 페이지네이터(602)는 단계 1909로 진행하고 거기서 페이지네이터(602)는 테이블 내의 임의의 위치들이 평가될 필요가 있는지를 판정한다. 만일, 단계 1909에서, 페이지네이터(602)가 페이지 내의 어느 위치도 평가될 필요가 없다고 판정하면, 페이지네이터(602)는 단계 1921로 진행하고 거기서 페이지네이터(602)는 마지막 테이블 항목으로부터 후방 포인터들(back pointers)을 추적하여 최적의 템플릿(1106) 시퀀스 및 콘텐트 매핑을 얻는다. 그 후 페이지네이터(602)는 단계 1901에서 방법(1900)에 따라서 동작을 종료한다.
그러나, 만일 페이지네이터(602)가, 단계 1909에서, 테이블 내의 위치들이 평가될 필요가 있다고 판정하면, 페이지네이터(602)는 단계 1912로 진행하고 거기서 페이지네이터(602)는 현 테이블 위치가 유효 항목을 갖고 있는지를 판정한다. 현 항목은 테이블에서 그에 선행하는 모든 항목들이 평가된 미평가된 테이블 항목들의 세트로부터 페이지네이터에 의해 선택된다. 만일, 단계 1912에서, 페이지네이터(602)가 현 테이블 항목이 유효 항목을 갖고 있지 않다고 판정하면, 페이지네이터(602)는 그 항목을 평가된 것으로 마크(mark)하고 위에 설명한 단계 1909로 진행한다. 그렇지 않고, 만일 페이지네이터(602)가, 단계 1912에서, 현 테이블 항목이 유효 항목(예컨대, 문서 콘텐트에 성공적으로 적용될 수 있는 템플릿들을 나타내는 수용 가능한 항목)을 갖고 있다고 판정하면, 페이지네이터(602)는 단계 1915로 진행하고 거기서 페이지네이터(602)는 현 테이블 위치에서 시작하는 페이지들에 대한 종점들의 목록을 생성하기 위해 저레벨 엔진(502)을 호출한다.
일반적으로, 프로그램 모듈에의 호출을 통하여, 저레벨 엔진(502)은 템플릿 저장 유닛(908) 내의 템플릿들(1106) 각각을 문서 콘텐트(904)의 미처리된 부분에 적용하여 어느 템플릿들(1106)이 유효 템플릿들(1106)인지를 판정한다. 만일 템플릿들(1106) 중 어느 것도 사용될 수 없다면, 현 테이블 위치 뒤에 템플릿들(1106)이 올 수 없고, 따라서 현 테이블 항목은 더 이상 고려되지 않아야 할 것이다. 저레벨 엔진(502)이 템플릿(1106)이 현 위치에서 적용될 수 있다고 판정하는 경우(예컨대, 그것은 현 테이블 위치에서 시작하는 콘텐트를 수용할 것이다), 저레벨 엔진(502)은 템플릿을 콘텐트에 적용하여 결과의 페이지의 종점 및 스코어를 판정하고 그 종점들을 페이지네이터(602)에 반환되는 종점들의 목록에 포함시키고, 페이지네이터(602)는 템플릿들(1106)의 새로운 시퀀스와 판련된 적절한 전체적 스코어를 판정할 수 있다.
그 후 페이지네이터(602)는 단계 1918로 진행하고 거기서 페이지네이터(602)는 단계 1915에서 반환된 임의의 종점들이 평가될 필요가 있는지(예컨대, 종점에 대하여 산출된 전체적 스코어가 있는지)를 판정한다. 만일, 단계 1918에서, 페이지네이터(602)가 어느 종점도 평가될 필요가 없다고 판정하면, 페이지네이터(602)는 위에 설명한 단계 1909로 진행한다. 그러나, 만일 페이지네이터(602)가, 단계 1918에서, 종점들이 평가될 필요가 있다고 판정하면, 페이지네이터(602)는 단계 1927로 진행하고 거기서 페이지네이터(602)는 새로운 종점으로 종료하는 시퀀스에 대한 전체적 스코어를 산출한다. 그 후 페이지네이터(602)는 단계 1930으로 진행하고 거기서 페이지네이터(602)는 산출된 전체적 스코어가 미리 정해진 가지치기 임계값보다 나은지를 판정한다. 만일, 단계 1930에서 페이지네이터(602)가 산출된 전체적 스코어가 미리 정해진 가지치기 임계값보다 낫지 않다고 판정하면, 페이지네이터(602)는 위에 설명한 단계 1918로 진행한다.
그러나, 만일, 페이지네이터(602)가, 단계 1930에서, 산출된 전체적 스코어가 미리 정해진 임계값보다 더 낫다(예컨대, 더 크다)고 판정하면, 페이지네이터(602)는 단계 1933으로 진행하고 거기서 페이지네이터(602)는 새로운 종점이 데이터 테이블 내에 항목을 갖고 있는지를 판정한다. 만일, 단계 1933에서, 페이지네이터(602)가 새로운 종점이 데이터 테이블 내에 항목을 갖고 있지 않다고 판정하면, 페이지네이터(602)는 단계 1936으로 진행하고 거기서 페이지네이터(602)는 산출된 전체적 스코어, 현 템플릿(1106), 및 현 위치에의 후방 포인터를 포함하는 새로운 종점에 대한 항목을 테이블에 추가한다. 그 후, 페이지네이터(602)는 위에 설명한 단계 1918로 진행한다.
그렇지 않고, 만일 페이지네이터(602)가, 단계 1933에서, 새로운 종점이 데이터 테이블 내에 항목을 갖고 있다고 판정하면, 페이지네이터(602)는 단계 1939로 진행하고 거기서 페이지네이터(602)는 산출된 전체적 스코어가 데이터 테이블에 저장된 스코어보다 더 나은지를 판정한다. 만일, 단계 1939에서, 페이지네이터(602)가 산출된 전체적 스코어가 데이터 테이블에 저장된 스코어보다 더 낫지 않다고 판정하면, 페이지네이터(602)는 위에 설명한 단계 1918로 진행한다.
그러나, 만일, 페이지네이터(602)가, 단계 1939에서, 산출된 전체적 스코어가 데이터 테이블에 저장된 스코어보다 더 낫다고 판정하면, 페이지네이터(602)는 단계 1942로 진행하고 거기서 페이지네이터(602)는 데이터 테이블에 저장된 항목을 새로운 종점, 산출된 전체적 스코어, 현 템플릿(1106), 및 현 위치에의 후방 포인터로 대체한다. 다음으로, 페이지네이터(602)는 위에 설명한 단계 1918로 진행한다.
이제 도 20을 참조하면, 여기 개시된 아키텍처를 실행하도록 동작 가능한 전형적인 컴퓨터 컴파일(compilation) 시스템의 개략 블록도가 예시되어 있다. 시스템(2000)은 하나 이상의 클라이언트(들)(2002)를 포함한다. 클라이언트(들)(2002)는 하드웨어 및/또는 소프트웨어(예컨대, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 클라이언트(들)(2002)는 예를 들어 청구된 내용의 특징들을 이용함으로써 쿠키(들) 및/또는 관련된 컨텍스트 정보(contextual information)를 저장(house)할 수 있다.
시스템(2000)은 또한 하나 이상의 서버(들)(2004)를 포함한다. 서버(들)(2004)는 하드웨어 및/또는 소프트웨어(예컨대, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버(들)(2004)는 예를 들어 청구된 내용의 특징들을 이용함으로써 변환들을 수행하는 스레드들을 저장(house)할 수 있다. 클라이언트(2002)와 서버(2004) 간의 하나의 가능한 통신은 2 이상의 컴퓨터 프로세스들 사이에 송신되도록 적응된 데이터 패킷의 형태로 될 수 있다. 데이터 패킷은 예를 들어 쿠키 및/또는 관련된 컨텍스트 정보를 포함할 수 있다. 시스템(2000)은 클라이언트(들)(2002)와 서버(들)(2004) 간에 통신을 용이하게 하기 위해 이용될 수 있는 통신 프레임워크(2006)(예컨대, 인터넷과 같은 세계적인 통신 네트워크)를 포함한다.
통신은 유선(광섬유를 포함) 및/또는 무선 기술을 통하여 용이하게 될 수 있다. 클라이언트(들)(2002)는 클라이언트(들)(2002)에 로컬인 정보(예컨대, 쿠키(들) 및/또는 관련된 컨텍스트 정보)를 저장하기 위해 이용될 수 있는 하나 이상의 클라이언트 데이터 저장소(들)(2008)에 동작 가능하게 접속된다. 유사하게, 서버(들)(2004)는 서버(들)(2004)에 로컬인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 서버 데이터 저장소(들)(2010)에 동작 가능하게 접속된다.
위에서 설명한 것은 청구된 내용의 예들을 포함한다. 물론, 청구된 내용을 설명할 목적으로 생각할 수 있는 모든 컴포넌트들 또는 방법들의 조합을 설명하는 것은 가능하지 않지만, 이 기술 분야의 통상의 지식을 가진 자라면 청구된 내용의 또 다른 조합들 및 치환들이 가능하다는 것을 알 수 있다. 따라서, 청구된 내용은 첨부된 청구항들의 정신 및 범위 내에 드는 모든 그러한 변경들, 수정들 및 변형들을 포함하는 것이 의도된다. 더욱이, "includes"라는 용어가 상세한 설명 또는 청구항들에서 이용되는 한, 그러한 용어는 "comprising"이라는 용어가 청구항의 전이구(transitional word)로서 사용될 때 해석되는 것과 유사하게 포괄적인 것으로 의도된다.

Claims (20)

  1. 매우 다양한 콘텐트를 가지고 다수의 크기(sizes) 및 치수(dimensions)에서 디스플레이될 수 있는 문서 레이아웃의 적응을 용이하게 하는 시스템으로서,
    템플릿(104)을 수신하는 인터페이스(102) - 상기 템플릿은 문서 레이아웃에 대한 제약들(constraints)의 고레벨 기술(high level description)임 - : 및
    고품질 레이아웃(110)을 자동으로 생성하기 위해 상기 템플릿을 해석(interpret)하고 콘텐트(108)를 어디에 배치할지를 판정하는 레이아웃 엔진(106)
    을 포함하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  2. 제1항에 있어서, 고레벨 제약 매개 변수들을 통하여 상기 템플릿의 디자인 및/또는 수정을 용이하게 하고 상기 템플릿들의 저장을 제공하는 사용자 인터페이스를 더 포함하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  3. 제2항에 있어서, 상기 사용자 인터페이스는 그래픽 사용자 인터페이스(GUI)인, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  4. 제1항에 있어서, 상기 레이아웃 엔진은 의미 흐름(semantic flow), 브랜드 ID(identity), 이미지 및 텍스트 상관(correlation), 광고 테마(advertising themes) 중 적어도 하나에 기초하여 상기 고품질 레이아웃을 생성하는, 문서 레이 아웃의 적응을 용이하게 하는 시스템.
  5. 제1항에 있어서, 상기 레이아웃 엔진은 상기 템플릿, 상기 고품질 레이아웃에서 이용될 콘텐트의 유형(들), 및 상기 고품질 레이아웃의 디스플레이 치수에 기초하여 상기 고품질 레이아웃을 생성하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  6. 제5항에 있어서, 상기 고품질 레이아웃을 디스플레이하는 출력 장치를 더 포함하고, 상기 고품질 레이아웃의 디스플레이 치수는 상기 출력 장치에 기초하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  7. 제5항에 있어서, 상기 고품질 레이아웃의 디스플레이 치수는 상기 템플릿이 작성될 때 알려지지 않은, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  8. 제5항에 있어서, 상기 고품질 레이아웃에서 이용될 콘텐트의 유형(들)은 상기 템플릿이 작성될 때 알려지지 않은, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  9. 제1항에 있어서, 저레벨 제약들(low level constraints)에 기초하여 적응 격자 기반 레이아웃(adaptive grid-based layout)에 상기 콘텐트를 적용하는 저레벨 엔진을 더 포함하고, 상기 레이아웃 엔진은 상기 고품질 레이아웃을 위하여 상기 콘텐트를 어디에 배치할지를 판정하고 상기 저레벨 엔진이 상기 고품질 레이아웃을 생성하는 데 필요한 상기 저레벨 제약들을 생성하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  10. 제1항에 있어서, 상기 레이아웃 엔진은 상기 콘텐트에 대한 적당한 위치들에 기초하여 콘텐트를 어디에 배치할지를 판정하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  11. 제1항에 있어서, 상기 문서 레이아웃은 최상위(top) 레벨 및 최하위(bottom) 레벨을 갖는 다중-레벨 문서이고, 상기 레이아웃 엔진은 상기 최상위 레벨에 배치된 콘텐트의 위치에 기초하여 상기 최하위 레벨에서 콘텐트를 어디에 배치할지를 판정하는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  12. 제1항에 있어서, 상기 고품질 레벨에서 이용되는 콘텐트는 다수의 소스들로부터 집계(aggregate)되는, 문서 레이아웃의 적응을 용이하게 하는 시스템.
  13. 제1항에 있어서, 상기 레이아웃 엔진은 상기 콘텐트가 수신되는 소스 포맷으로부터 상기 콘텐트를 변환(translate)하기 위해 XSLT(Extensible Stylesheet Language Transformation)을 이용하는, 문서 레이아웃의 적응을 용이하게 하는 시 스템.
  14. 고품질 레이아웃을 생성하기 위해 콘텐트를 배열하는 컴퓨터 구현 방법으로서,
    문서 레이아웃을 위한 템플릿을 선택하는 단계(802) - 상기 템플릿은 고레벨 언어로 정의됨 - ;
    문서에 대한 디스플레이 크기를 판정하는 단계(804);
    상기 문서에 대한 콘텐트를 수신하는 단계(806);
    상기 콘텐트에 대한 이용 가능한 위치들을 판정하기 위해 상기 템플릿 및 상기 디스플레이 크기를 이용하는 단계(808);
    상기 이용 가능한 위치들로부터 상기 콘텐트에 대한 고품질 위치를 선택하는 단계(810); 및
    상기 콘텐트를 상기 고품질 위치 내에 배열함으로써 상기 문서에 대한 고품질 레이아웃을 생성하는 단계(812)
    를 포함하는, 콘텐트를 배열하는 컴퓨터 구현 방법.
  15. 제14항에 있어서, 문서에 대한 템플릿을 고레벨 언어로 정의하는 단계를 더 포함하는, 콘텐트를 배열하는 컴퓨터 구현 방법.
  16. 제15항에 있어서, 상기 문서의 디스플레이 크기 및 상기 콘텐트의 유형은 상 기 템플릿이 정의될 때 알려지지 않은, 콘텐트를 배열하는 컴퓨터 구현 방법.
  17. 제14항에 있어서, 상기 콘텐트에 대한 이용 가능한 위치들을 판정하는 단계는 상기 문서 내에 이전에 배치된 다른 콘텐트의 위치들에 적어도 부분적으로 기초하는, 콘텐트를 배열하는 컴퓨터 구현 방법.
  18. 제14항에 있어서, 상기 고품질 위치를 선택하는 단계는 알고리즘에 기초하고, 상기 알고리즘은 최적 적합(best fit) 알고리즘, 최초 적합(first fit) 알고리즘 및 최초 양호 적합(first good fit) 알고리즘 중 적어도 하나인, 콘텐트를 배열하는 컴퓨터 구현 방법.
  19. 제14항에 있어서, 상기 고품질 위치를 선택하는 단계는 의미 흐름(semantic flow), 브랜드 ID(identity), 이미지 및 텍스트 상관(correlation), 광고 테마(advertising themes) 중 적어도 하나에 기초하는, 콘텐트를 배열하는 컴퓨터 구현 방법.
  20. 매우 다양한 콘텐트를 가지고 다수의 크기 및 치수에서 디스플레이될 수 있는 고품질 레이아웃을 생성하기 위해 콘텐트를 배열하는 컴퓨터 구현 시스템으로서,
    문서 레이아웃을 위한 템플릿(104)의 제약들을 고레벨 언어로 기술하는 수 단;
    문서 디스플레이 크기(106)를 판정하는 수단;
    상기 문서에 대한 콘텐트(108)를 수신하는 수단;
    상기 템플릿 및 상기 디스플레이 크기에 기초하여 상기 콘텐트에 대한 이용 가능한 위치들(106)을 판정하는 수단;
    상기 이용 가능한 위치들로부터 상기 콘텐트에 대한 고품질 위치(106)를 선택하는 수단: 및
    상기 콘텐트를 상기 고품질 위치에 배치함으로써 상기 문서에 대한 고품질 레이아웃(110)을 생성하는 수단
    을 포함하는, 콘텐트를 배열하는 컴퓨터 구현 시스템.
KR1020087008111A 2005-10-04 2006-10-04 문서 레이아웃의 적응을 용이하게 하는 시스템과, 콘텐트를배열하는 컴퓨터 구현 방법 및 컴퓨터 구현 시스템 KR20080053930A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US72346705P 2005-10-04 2005-10-04
US60/723,467 2005-10-04
US11/343,351 2006-01-31
US11/343,351 US20070079236A1 (en) 2005-10-04 2006-01-31 Multi-form design with harmonic composition for dynamically aggregated documents

Publications (1)

Publication Number Publication Date
KR20080053930A true KR20080053930A (ko) 2008-06-16

Family

ID=37903307

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008111A KR20080053930A (ko) 2005-10-04 2006-10-04 문서 레이아웃의 적응을 용이하게 하는 시스템과, 콘텐트를배열하는 컴퓨터 구현 방법 및 컴퓨터 구현 시스템

Country Status (8)

Country Link
US (1) US20070079236A1 (ko)
EP (1) EP1941392A1 (ko)
JP (1) JP2009510650A (ko)
KR (1) KR20080053930A (ko)
AU (1) AU2006299329B2 (ko)
BR (1) BRPI0616940A2 (ko)
RU (1) RU2419856C2 (ko)
WO (1) WO2007041703A1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011053314A1 (en) * 2009-10-30 2011-05-05 Hewlett-Packard Development Company, L.P. Arranging secondary images adjacent to a primary image
WO2012057726A1 (en) * 2010-10-25 2012-05-03 Hewlett-Packard Development Company Variable template based document generation
KR101302292B1 (ko) * 2012-01-05 2013-09-03 (주)이스트소프트 렌더링엔진 자동변환을 위한 웹브라우저를 기록한 컴퓨터 판독가능한 기록매체 및 렌더링엔진 자동변환방법
KR20160138435A (ko) * 2014-03-31 2016-12-05 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 장치-인식 스케일링을 이용한 몰입형 문서 상호작용 기법
US9928225B2 (en) 2012-01-23 2018-03-27 Microsoft Technology Licensing, Llc Formula detection engine
US10127221B2 (en) 2013-03-11 2018-11-13 Microsoft Technology Licensing, Llc Detection and reconstruction of East Asian layout features in a fixed format document
KR20220048680A (ko) * 2020-10-13 2022-04-20 주식회사 한글과컴퓨터 프레젠테이션 문서를 구성하는 슬라이드에 녹화 영상의 삽입을 가능하게 하는 전자 단말 장치 및 그 동작 방법

Families Citing this family (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004629A (ja) * 2003-06-13 2005-01-06 Hitachi Ltd ページ生成方法及びその装置
US7536636B2 (en) * 2004-04-26 2009-05-19 Kodak Graphic Communications Canada Company Systems and methods for comparing documents containing graphic elements
US7472340B2 (en) * 2004-12-20 2008-12-30 Microsoft Corporation Method and computer-readable medium for generating a multiple column layout
US9275052B2 (en) 2005-01-19 2016-03-01 Amazon Technologies, Inc. Providing annotations of a digital work
IL167283A (en) * 2005-03-07 2007-06-03 Israel Marmorstein Methods for printing booklets and booklets printed thereby
US8438468B2 (en) * 2005-04-15 2013-05-07 International Business Machines Corporation Annotation management
US7644356B2 (en) * 2005-06-10 2010-01-05 Hewlett-Packard Development Company, L.P. Constraint-based albuming of graphic elements
AU2006278225A1 (en) * 2005-08-09 2007-02-15 Compography, Inc. Methods and apparatuses to assemble, extract and deploy content from electronic documents
US20070094591A1 (en) * 2005-10-24 2007-04-26 Etgen Michael P System and method for text legibility enhancement
US7739592B2 (en) * 2005-11-10 2010-06-15 International Business Machines Corporation Delivery, organization, and management of data capture elements
US8584002B2 (en) * 2006-01-09 2013-11-12 Apple Inc. Automatic sub-template selection based on content
US20070250711A1 (en) * 2006-04-25 2007-10-25 Phonified Llc System and method for presenting and inputting information on a mobile device
US8566418B2 (en) * 2006-05-04 2013-10-22 Samsung Electronics Co., Ltd Configurable system for using Internet services on CE devices
WO2008021832A2 (en) * 2006-08-09 2008-02-21 Radar Networks, Inc. Harvesting data from page
US8725565B1 (en) 2006-09-29 2014-05-13 Amazon Technologies, Inc. Expedited acquisition of a digital item following a sample presentation of the item
US9672533B1 (en) 2006-09-29 2017-06-06 Amazon Technologies, Inc. Acquisition of an item based on a catalog presentation of items
US7865817B2 (en) 2006-12-29 2011-01-04 Amazon Technologies, Inc. Invariant referencing in digital works
US9665529B1 (en) 2007-03-29 2017-05-30 Amazon Technologies, Inc. Relative progress and event indicators
US7716224B2 (en) 2007-03-29 2010-05-11 Amazon Technologies, Inc. Search and indexing on a user device
US8700005B1 (en) 2007-05-21 2014-04-15 Amazon Technologies, Inc. Notification of a user device to perform an action
KR101213235B1 (ko) * 2007-07-24 2012-12-17 삼성전자주식회사 콘텐트 사용자 또는 콘텐트 제작자가 콘텐트에 삽입되는광고를 선택할 수 있는 콘텐트의 재생/제작 방법 및 장치
EP2201707A4 (en) * 2007-09-20 2011-09-21 Visible World Corp SYSTEMS AND METHOD FOR PACKAGING MEDIA
US7831579B2 (en) * 2007-12-28 2010-11-09 Microsoft Corporation Adaptive page layout utilizing block-level elements
US20090199126A1 (en) * 2008-02-06 2009-08-06 International Business Machines Corporation Method for automatically organizing toolbars for a software application
US8266163B2 (en) * 2008-02-26 2012-09-11 International Business Machines Corporation Utilizing reference/ID linking in XML wrapper code generation
US20090254814A1 (en) * 2008-04-08 2009-10-08 Microsoft Corporation Per-edge rules and constraints-based layout mechanism
JP5340048B2 (ja) * 2008-06-17 2013-11-13 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
US8381123B2 (en) * 2008-06-27 2013-02-19 Microsoft Corporation Positioning and realizing of virtualized visible content within a viewport
US8214736B2 (en) * 2008-08-15 2012-07-03 Screenplay Systems, Inc. Method and system of identifying textual passages that affect document length
JP5349879B2 (ja) * 2008-09-18 2013-11-20 キヤノン株式会社 情報処理装置、情報処理方法、プログラム、及び、記憶媒体
JP2010097564A (ja) * 2008-10-20 2010-04-30 Canon Inc 情報処理装置及びレイアウト処理方法
US9087032B1 (en) 2009-01-26 2015-07-21 Amazon Technologies, Inc. Aggregation of highlights
US20100218090A1 (en) * 2009-02-26 2010-08-26 Universal - Ad Ltd. Sub-page-based page layout system and method thereof
US8849873B2 (en) * 2009-03-18 2014-09-30 Bentley Systems, Incorporated Specifications automation system and method
US20100277767A1 (en) * 2009-04-30 2010-11-04 John Henry Klippenstein Profit based layouts
US20110004819A1 (en) * 2009-07-03 2011-01-06 James Hazard Systems and methods for user-driven document assembly
US8832548B2 (en) * 2009-09-21 2014-09-09 Google Inc. System and method for selective control of zoom adjustments in an electronic publication
EP2480957B1 (en) * 2009-09-22 2017-08-09 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US9310907B2 (en) 2009-09-25 2016-04-12 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US8766928B2 (en) * 2009-09-25 2014-07-01 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US8832585B2 (en) 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US8799826B2 (en) * 2009-09-25 2014-08-05 Apple Inc. Device, method, and graphical user interface for moving a calendar entry in a calendar application
US8692763B1 (en) 2009-09-28 2014-04-08 John T. Kim Last screen rendering for electronic book reader
WO2011053282A1 (en) * 2009-10-28 2011-05-05 Hewlett-Packard Development Company, L.P. Methods and systems for preparing mixed-content documents
US8347238B2 (en) * 2009-12-16 2013-01-01 Apple Inc. Device, method, and graphical user interface for managing user interface content and user interface elements by dynamic snapping of user interface elements to alignment guides
US8381125B2 (en) 2009-12-16 2013-02-19 Apple Inc. Device and method for resizing user interface content while maintaining an aspect ratio via snapping a perimeter to a gridline
US8539386B2 (en) * 2010-01-26 2013-09-17 Apple Inc. Device, method, and graphical user interface for selecting and moving objects
US8539385B2 (en) * 2010-01-26 2013-09-17 Apple Inc. Device, method, and graphical user interface for precise positioning of objects
US8683363B2 (en) * 2010-01-26 2014-03-25 Apple Inc. Device, method, and graphical user interface for managing user interface content and user interface elements
US8209630B2 (en) * 2010-01-26 2012-06-26 Apple Inc. Device, method, and graphical user interface for resizing user interface content
US8677268B2 (en) * 2010-01-26 2014-03-18 Apple Inc. Device, method, and graphical user interface for resizing objects
US20130014008A1 (en) * 2010-03-22 2013-01-10 Niranjan Damera-Venkata Adjusting an Automatic Template Layout by Providing a Constraint
US9146913B2 (en) 2010-03-29 2015-09-29 Bentley Systems, Incorporated Specifications automation system and method
US8504915B2 (en) * 2010-04-12 2013-08-06 Microsoft Corporation Optimizations for hybrid word processing and graphical content authoring
US9361130B2 (en) * 2010-05-03 2016-06-07 Apple Inc. Systems, methods, and computer program products providing an integrated user interface for reading content
US20150248698A1 (en) * 2010-06-23 2015-09-03 Google Inc. Distributing content items
US8972879B2 (en) 2010-07-30 2015-03-03 Apple Inc. Device, method, and graphical user interface for reordering the front-to-back positions of objects
US9098182B2 (en) 2010-07-30 2015-08-04 Apple Inc. Device, method, and graphical user interface for copying user interface objects between content regions
US9081494B2 (en) 2010-07-30 2015-07-14 Apple Inc. Device, method, and graphical user interface for copying formatting attributes
JP5323103B2 (ja) * 2010-09-03 2013-10-23 三菱電機株式会社 グラフィカルユーザインタフェース装置
US9495322B1 (en) 2010-09-21 2016-11-15 Amazon Technologies, Inc. Cover display
US8717920B2 (en) * 2010-10-08 2014-05-06 Telefonaktiebolaget L M Ericsson (Publ) Signalling mechanism for multi-tiered intra-band carrier aggregation
US9218323B2 (en) * 2010-10-30 2015-12-22 Hewlett-Parkard Development Company, L.P. Optimizing hyper parameters of probabilistic model for mixed text-and-graphics layout template
US20120159314A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Adaptive content layout
US9002139B2 (en) 2011-02-16 2015-04-07 Adobe Systems Incorporated Methods and systems for automated image slicing
US8788927B2 (en) * 2011-02-24 2014-07-22 Cbs Interactive Inc. System and method for displaying web page content
US9065793B2 (en) 2011-02-24 2015-06-23 Cbs Interactive Inc. Rendering web content using pre-caching
TWI453658B (zh) * 2011-02-25 2014-09-21 Esobi Inc 一種顯示畫面之動態排版方法
US9152616B2 (en) * 2011-04-28 2015-10-06 Flipboard, Inc. Template-based page layout for web content
US20130127916A1 (en) * 2011-05-23 2013-05-23 Justin Van Slembrouk Adaptive Content Display
US8866842B2 (en) * 2011-05-23 2014-10-21 Adobe Systems Incorporated Adaptive content authoring
US20130132830A1 (en) * 2011-07-11 2013-05-23 Adobe Systems Incorporated Behavior templates
US9396167B2 (en) 2011-07-21 2016-07-19 Flipboard, Inc. Template-based page layout for hosted social magazines
US9639614B2 (en) 2011-10-04 2017-05-02 Microsoft Technology Licensing, Llc Maximizing content item information on a search engine results page
US9158741B1 (en) 2011-10-28 2015-10-13 Amazon Technologies, Inc. Indicators for navigating digital works
US20130145257A1 (en) * 2011-12-06 2013-06-06 Google Inc. Edition Designer
CN103186519B (zh) * 2011-12-31 2017-04-05 北大方正集团有限公司 双向排版方法和设备
US8977956B2 (en) * 2012-01-13 2015-03-10 Hewlett-Packard Development Company, L.P. Document aesthetics evaluation
US9213460B2 (en) * 2012-01-20 2015-12-15 Cimpress Schweiz Gmbh Visual editing tool buffer region
EP2807608B1 (en) 2012-01-23 2024-04-10 Microsoft Technology Licensing, LLC Borderless table detection engine
EP2807604A1 (en) 2012-01-23 2014-12-03 Microsoft Corporation Vector graphics classification engine
US8847986B2 (en) * 2012-01-27 2014-09-30 Think-Cell Software Gmbh Method of solving page layout constraints
FR2987473B1 (fr) * 2012-02-23 2014-02-14 Gutenberg Technology Procede de production d'un contenu multimedia destine a une pluralite de supports de representation
US20130290837A1 (en) * 2012-04-30 2013-10-31 James Paul Hudetz Method and Apparatus for Correcting Document Formatting Based on Source Document
US20130305144A1 (en) * 2012-05-09 2013-11-14 Ni Group Limited Method of Publishing Digital Content
US20130305145A1 (en) * 2012-05-09 2013-11-14 Ni Group Limited A Method of Publishing Digital Content
JP6010744B2 (ja) * 2012-05-31 2016-10-19 株式会社Pfu 文書作成システム、文書作成装置、文書作成方法、及びプログラム
JP2014041482A (ja) * 2012-08-22 2014-03-06 Dainippon Printing Co Ltd 組版装置、組版方法、および、組版装置用プログラム
KR102110281B1 (ko) * 2012-09-07 2020-05-13 아메리칸 케미칼 소사이어티 자동화된 작성물 평가기
US9105036B2 (en) * 2012-09-11 2015-08-11 International Business Machines Corporation Visualization of user sentiment for product features
US20140108922A1 (en) * 2012-10-16 2014-04-17 Theo Gravity Content layout determination
US9239931B2 (en) * 2012-10-19 2016-01-19 Google Inc. Identifying shared content stored by a service
US9245209B2 (en) 2012-11-21 2016-01-26 Xerox Corporation Dynamic bleed area definition for printing of multi-dimensional substrates
USD754161S1 (en) 2012-11-26 2016-04-19 Nero Ag Device with a display screen with graphical user interface
US20140149860A1 (en) * 2012-11-26 2014-05-29 Nero Ag System and method for presenting a tapestry interface
US20140188942A1 (en) * 2012-12-31 2014-07-03 Appsense Limited Data driven hierarchical pages
US9195643B2 (en) 2012-12-31 2015-11-24 Appsense Limited Data driven hierarchical pages
US9953008B2 (en) * 2013-01-18 2018-04-24 Microsoft Technology Licensing, Llc Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally
US9460056B2 (en) * 2013-01-22 2016-10-04 Xerox Corporation Dynamic image layout for personalized packages
US9946691B2 (en) * 2013-01-30 2018-04-17 Microsoft Technology Licensing, Llc Modifying a document with separately addressable content blocks
US9148469B1 (en) * 2013-03-14 2015-09-29 Google Inc. Dynamically designing shared content
US8930897B2 (en) * 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
US20140331124A1 (en) * 2013-05-02 2014-11-06 Locu, Inc. Method for maintaining common data across multiple platforms
US9489349B2 (en) * 2013-07-09 2016-11-08 Flipboard, Inc. Page template selection for content presentation in a digital magazine
US9529790B2 (en) * 2013-07-09 2016-12-27 Flipboard, Inc. Hierarchical page templates for content presentation in a digital magazine
JP2015036886A (ja) * 2013-08-13 2015-02-23 ソニー株式会社 情報処理装置、記憶媒体、および方法
US9953011B1 (en) * 2013-09-26 2018-04-24 Amazon Technologies, Inc. Dynamically paginated user interface
CN106462559B (zh) 2014-02-07 2019-10-15 谷歌有限责任公司 任意大小内容项生成
US20150310390A1 (en) * 2014-04-23 2015-10-29 Bank Of America Corporation Aggregation and workflow engines for managing project information
JP5664813B1 (ja) * 2014-06-10 2015-02-04 富士ゼロックス株式会社 デザイン管理装置及びプログラム
US9342498B2 (en) * 2014-06-12 2016-05-17 Synergy Platform Pty Ltd System and method for generating a design template based on graphical input
WO2016067098A1 (en) * 2014-10-27 2016-05-06 Kinaxis Inc. Responsive data exploration on small screen devices
US10242069B2 (en) * 2015-03-13 2019-03-26 Microsoft Technology Licensing, Llc Enhanced template curating
RU2610241C2 (ru) * 2015-03-19 2017-02-08 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ и система синтеза текста на основе извлеченной информации в виде rdf-графа с использованием шаблонов
US20160292130A1 (en) * 2015-04-02 2016-10-06 International Business Machines Corporation Legacy document converter for a mobile device
US20160321218A1 (en) * 2015-04-27 2016-11-03 Neatly Co. System and method for transforming image information for a target system interface
US9922022B2 (en) * 2016-02-01 2018-03-20 Microsoft Technology Licensing, Llc. Automatic template generation based on previous documents
US10839149B2 (en) 2016-02-01 2020-11-17 Microsoft Technology Licensing, Llc. Generating templates from user's past documents
US11238115B1 (en) 2016-07-11 2022-02-01 Wells Fargo Bank, N.A. Semantic and context search using knowledge graphs
WO2018052978A1 (en) * 2016-09-14 2018-03-22 Pti Marketing Technologies Inc. Systems and methods for automatically reformatting publications
US10817911B2 (en) * 2016-09-30 2020-10-27 Criteo Sa Programmatic generation of graphical display source code for a computerized graphical advertisement display
US10713430B2 (en) * 2016-11-30 2020-07-14 Google Llc Systems and methods for applying layout to documents
US11238084B1 (en) 2016-12-30 2022-02-01 Wells Fargo Bank, N.A. Semantic translation of data sets
US11567930B2 (en) 2017-04-25 2023-01-31 Sap Se Adaptive data retrieval with runtime authorization
US10360473B2 (en) * 2017-05-30 2019-07-23 Adobe Inc. User interface creation from screenshots
CA3063675A1 (en) * 2017-06-16 2018-12-20 Microsoft Technology Licensing, Llc Rules based user interface generation
CN108509158B (zh) * 2017-07-25 2020-01-03 平安科技(深圳)有限公司 保单打印方法、装置、存储介质和计算机设备
US10902479B2 (en) 2017-10-17 2021-01-26 Criteo Sa Programmatic generation and optimization of images for a computerized graphical advertisement display
JP7129248B2 (ja) * 2018-07-05 2022-09-01 フォルシアクラリオン・エレクトロニクス株式会社 情報制御装置、及び表示変更方法
US10901593B2 (en) * 2018-09-21 2021-01-26 Salesforce.Com, Inc. Configuring components in a display template based on a user interface type
JP2020144427A (ja) * 2019-03-04 2020-09-10 富士ゼロックス株式会社 文書作成装置、及びプログラム
US11449664B1 (en) * 2019-07-01 2022-09-20 Instasize, Inc. Template for creating content item
US11676316B1 (en) 2019-07-01 2023-06-13 Instasize, Inc. Shareable settings for modifying images
US10977331B2 (en) * 2019-07-24 2021-04-13 International Business Machines Corporation Closing a plurality of webpages in a browser
US11900052B2 (en) * 2020-11-11 2024-02-13 Microsoft Technology Licensing, Llc Automatic generation of transformations of formatted templates using deep learning modeling
KR102427890B1 (ko) * 2020-11-25 2022-08-01 네이버 주식회사 콘텐츠 배열을 위한 객체를 제공하는 방법 및 시스템
CN112669211B (zh) 2020-12-29 2023-07-04 三星电子(中国)研发中心 一种图像重定位方法和装置
US11847402B2 (en) * 2021-01-30 2023-12-19 Walmart Apollo, Llc Systems and methods for layout customization
EP4145395A1 (en) * 2021-09-07 2023-03-08 grow.photos GmbH Method for arranging digital images on a digital page
US11687708B2 (en) * 2021-09-27 2023-06-27 Microsoft Technology Licensing, Llc Generator for synthesizing templates
US11853688B2 (en) * 2022-03-04 2023-12-26 Adobe Inc. Automatic detection and removal of typesetting errors in electronic documents
US20230334237A1 (en) * 2022-04-14 2023-10-19 Sigma Computing, Inc. Workbook template sharing
US11763075B1 (en) 2022-05-27 2023-09-19 Microsoft Technology Licensing, Llc Method and system of discovering templates for documents
US20240036835A1 (en) * 2022-08-01 2024-02-01 Servicenow, Inc. Low-Code / No-Code Layer for Interactive Application Development

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278901A (en) * 1992-04-30 1994-01-11 International Business Machines Corporation Pattern-oriented intrusion-detection system and method
US6029182A (en) * 1996-10-04 2000-02-22 Canon Information Systems, Inc. System for generating a custom formatted hypertext document by using a personal profile to retrieve hierarchical documents
US6023714A (en) * 1997-04-24 2000-02-08 Microsoft Corporation Method and system for dynamically adapting the layout of a document to an output device
US6684369B1 (en) * 1997-06-19 2004-01-27 International Business Machines, Corporation Web site creator using templates
US6826727B1 (en) * 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US7284199B2 (en) * 2000-03-29 2007-10-16 Microsoft Corporation Process of localizing objects in markup language documents
KR100853349B1 (ko) * 2000-08-17 2008-08-21 가부시키가이샤 이 미디어 출판물 작성방법, 그 방법에 의한 전자화 출판물 및 그표시방법 및 네트워크 시스템
US20020184401A1 (en) * 2000-10-20 2002-12-05 Kadel Richard William Extensible information system
EP1770547B1 (en) * 2001-06-14 2012-09-12 Sharp Kabushiki Kaisha Data processing method, data processing program, and data processing apparatus
US7392475B1 (en) * 2003-05-23 2008-06-24 Microsoft Corporation Method and system for automatic insertion of context information into an application program module
US7246311B2 (en) * 2003-07-17 2007-07-17 Microsoft Corporation System and methods for facilitating adaptive grid-based document layout
GB2404270A (en) * 2003-07-24 2005-01-26 Hewlett Packard Development Co Document composition
US7171618B2 (en) * 2003-07-30 2007-01-30 Xerox Corporation Multi-versioned documents and method for creation and use thereof
US20050060317A1 (en) * 2003-09-12 2005-03-17 Lott Christopher Martin Method and system for the specification of interface definitions and business rules and automatic generation of message validation and transformation software
US7424672B2 (en) * 2003-10-03 2008-09-09 Hewlett-Packard Development Company, L.P. System and method of specifying image document layout definition
US7554689B2 (en) * 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
EP1569087A3 (en) * 2004-02-17 2007-04-25 Canon Kabushiki Kaisha Data processing apparatus, data processing method, program for implementing the method, and storage medium storing the program
JP4047308B2 (ja) * 2004-08-06 2008-02-13 キヤノン株式会社 レイアウト処理方法、情報処理装置及びコンピュータプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011053314A1 (en) * 2009-10-30 2011-05-05 Hewlett-Packard Development Company, L.P. Arranging secondary images adjacent to a primary image
US8594459B2 (en) 2009-10-30 2013-11-26 Hewlett-Packard Development Company, L.P. Arranging secondary images adjacent to a primary image
WO2012057726A1 (en) * 2010-10-25 2012-05-03 Hewlett-Packard Development Company Variable template based document generation
KR101302292B1 (ko) * 2012-01-05 2013-09-03 (주)이스트소프트 렌더링엔진 자동변환을 위한 웹브라우저를 기록한 컴퓨터 판독가능한 기록매체 및 렌더링엔진 자동변환방법
US9928225B2 (en) 2012-01-23 2018-03-27 Microsoft Technology Licensing, Llc Formula detection engine
US10127221B2 (en) 2013-03-11 2018-11-13 Microsoft Technology Licensing, Llc Detection and reconstruction of East Asian layout features in a fixed format document
KR20160138435A (ko) * 2014-03-31 2016-12-05 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 장치-인식 스케일링을 이용한 몰입형 문서 상호작용 기법
KR20220048680A (ko) * 2020-10-13 2022-04-20 주식회사 한글과컴퓨터 프레젠테이션 문서를 구성하는 슬라이드에 녹화 영상의 삽입을 가능하게 하는 전자 단말 장치 및 그 동작 방법

Also Published As

Publication number Publication date
EP1941392A1 (en) 2008-07-09
RU2008112881A (ru) 2009-10-10
RU2419856C2 (ru) 2011-05-27
BRPI0616940A2 (pt) 2011-07-05
US20070079236A1 (en) 2007-04-05
AU2006299329B2 (en) 2011-04-07
JP2009510650A (ja) 2009-03-12
AU2006299329A1 (en) 2007-04-12
WO2007041703A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
AU2006299329B2 (en) Multi-form design with harmonic composition for dynamically aggregated documents
US7246311B2 (en) System and methods for facilitating adaptive grid-based document layout
US8375293B2 (en) Method and apparatus for defining documents
JP4138011B2 (ja) 媒体でデザインするためのコンテンツの自動的なレイアウトおよび書式設定
US6928610B2 (en) Automatic layout of content in a design for a medium
US7085999B2 (en) Information processing system, proxy server, web page display method, storage medium, and program transmission apparatus
US5895477A (en) Design engine for automatic layout of content
JP4625464B2 (ja) 文書処理装置
US20050114764A1 (en) Producing a page of information based on a dynamic edit form and one or more transforms
US20090210780A1 (en) Document processing and management approach to creating a new document in a mark up language environment using new fragment and new scheme
US20080134019A1 (en) Processing Data And Documents That Use A Markup Language
Schrier et al. Adaptive layout for dynamically aggregated documents
JP2004139466A (ja) 電子ドキュメント印刷プログラムおよび電子ドキュメント印刷システム
US20070150494A1 (en) Method for transformation of an extensible markup language vocabulary to a generic document structure format
WO2006137563A1 (ja) データ処理装置及びデータ処理方法
US9286272B2 (en) Method for transformation of an extensible markup language vocabulary to a generic document structure format
US20070283246A1 (en) Processing Documents In Multiple Markup Representations
US20050114765A1 (en) Producing a page of information based on a dynamic edit form and one or more transforms
EP1743254A1 (en) Processing data and documents that use a markup language
WO2005098664A1 (en) Processing documents in multiple markup representations
van Ossenbruggen et al. REPORT INS-E0301 JUNE 30, 2003
van Ossenbruggen et al. INformation Systems Towards a multimedia formatting vocabulary
JP2008225909A (ja) 文書処理装置及び文書処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application