JP2000338953A - フォント特徴ファイル処理 - Google Patents

フォント特徴ファイル処理

Info

Publication number
JP2000338953A
JP2000338953A JP2000101501A JP2000101501A JP2000338953A JP 2000338953 A JP2000338953 A JP 2000338953A JP 2000101501 A JP2000101501 A JP 2000101501A JP 2000101501 A JP2000101501 A JP 2000101501A JP 2000338953 A JP2000338953 A JP 2000338953A
Authority
JP
Japan
Prior art keywords
font
feature
glyph
definition
file
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2000101501A
Other languages
English (en)
Inventor
P Peiteru Silas
ピー. ペイテル サイラス
A Hall Jeremy
エイ. ホール ジェレミー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Systems Inc
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 Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of JP2000338953A publication Critical patent/JP2000338953A/ja
Pending legal-status Critical Current

Links

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/109Font handling; Temporal or kinetic typography

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Record Information Processing For Printing (AREA)
  • Document Processing Apparatus (AREA)

Abstract

(57)【要約】 【課題】 特に、OpenTypeフォントであるフォ
ントに対する特徴を特定する特徴ファイルと呼ばれるフ
ロントエンド編集可能テキストファイルを処理する方法
及び装置を提供する。 【解決手段】 本発明によれば、特定された特徴が構文
解析され且つフォントデータとしてフォント内に格納さ
れる。特徴ファイルはハイレベル特徴定義言語で表現さ
れた例えばレイアウト特徴等の種々のタイポグラフィ特
徴の仕様に対する簡単な論理ステートメントを包含して
いる。特徴ファイルはフォントテーブル内のフィールド
に対する上書き値を包含することが可能である。特徴フ
ァイルは既存のフォントファイルと結合して処理され向
上されたフォントファイルを確立する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタルフォント
の変換及び修正技術に関するものである。
【0002】
【従来の技術】特定のデザインを有する1組のキャラク
タは「タイプフェース」と呼ばれる。例えばカリフォル
ニア州サンノゼのアドビシステムズインコーポレイテッ
ド(以下、単に「アドビ」と呼称する)から入手可能な
ポストスクリプト(PostScript)(商標)フ
ォント等のデジタルフォント(以後、単に、「フォン
ト」と呼ぶ)は、特定のタイプフェースでキャラクタを
レンダリングさせるための命令(通常、プログラム可能
なプロセッサ上で実行されるレンダリングプログラムに
よって読取られ且つ解釈される)を有している。
【0003】OpenType(商標)フォントフォー
マットはワシントン州レドモンドのマイクロソフトコー
ポレイション(以後、単に、「マイクロソフト」と呼
ぶ)とアドビとによって共同開発されたものである。
【0004】OpenTypeフォントは多様なテーブ
ルを有しており、且つ、オプションとして、OpenT
ypeレイアウトテーブルを有しており、それらはフォ
ント作成者がより良い国際的な且つハイエンドの活字フ
ォントを設計することを可能とさせている。OpenT
ypeレイアウトテーブルはグリフ置換、グリフ位置決
め、行端揃え、及びベースライン位置決めに関する情報
を有しており、テキスト処理アプリケーションがテキス
トレイアウトを改善することを可能とさせる。該テーブ
ルは活字特徴を表す二進データを包含しており、それ
は、その形式においてOpenTypeフォントへ付加
することが可能である。例えば、OpenTypeフォ
ントにおけるグリフ置換(GSUB)テーブルはそのフ
ォントで設定されているテキスト中の隣接するf及びi
のグリフをそのフォントにおけるfi合字グリフで置換
することを特定することが可能な合字(liga、即ち
リガチャ)特徴を包含することが可能である。従来、こ
のようなテーブルは二進データを発生するための特定の
プログラムを書込むことによるか又は最初に各フォント
テーブルデータ構造内へ入る値を詳細に記述するテキス
ト入力ファイルを用意し、次いで該テキスト表現をOp
enTypeによって必要とされる二進形態へ組立てる
ツールを稼動させることによって作成していた。これら
のアプローチのうちの最初のものは柔軟性を欠如してお
り、一方マイクロソフトによって開発されたTrue
Type Open Assembler(TTOAS
M)によって例示されるように後者は非常に低いレベル
であり且つ基礎となるデータ構造の完全なる知識を必要
とし、従って、コンピュータサイエンスのバックグラウ
ンドではなくグラフィックアーツの経験を有する傾向の
あるフォント編集者にとって妥当なものではない。
【0005】
【発明が解決しようとする課題】本発明は、以上の点に
鑑みなされたものであって、上述した如き従来技術の欠
点を解消し、例えばOpenType(商標)フォント
ファイル等の既存のフォントファイルに対する変更を定
義するか又はフォントファイルを作成するためにユーザ
(例えばフォント編集者)が使用することの可能なフロ
ントエンド編集可能テキストファイル(「特徴ファイ
ル」と呼称する)を処理する方法及び装置を提供するこ
とを目的とする。
【0006】
【課題を解決するための手段】本発明によれば、特徴フ
ァイルと呼ばれるフロントエンド編集可能テキストファ
イルを処理する技術が提供される。特徴ファイルはソー
スフォントを向上させるか又は補充することの可能な例
えばレイアウト特徴等の種々の活字特徴の仕様に対する
簡単な論理ステートメントを包含している。特徴ファイ
ルは、フォントテーブル内のフィールドに対するオーバ
ーライド(上書き)値を包含している。特徴ファイルは
向上させたフォントファイルを確立するために既存のフ
ォントファイルと結合して処理することが可能である。
【0007】一般的に、1つの側面においては、本発明
はフォントに対して活字特徴を付加する方法を提供して
いる。本方法は、ハイレベル特徴定義言語で表現された
特徴定義を包含する特徴ファイルを用意し、コンピュー
タプログラム内の前記特徴ファイルを読取り且つ構文解
析して前記特徴定義の内部表現を発生し且つ前記内部表
現をコンピュータメモリ内に格納し、前記特徴定義をフ
ォントテーブル又はサブテーブル定義へ変換し、前記テ
ーブル又はサブテーブル定義をフォントファイル内に書
き出す、ことを包含している。
【0008】一般的に、別の側面によれば、本発明はフ
ォントへ活字特徴を付加すべく動作可能なシステムを提
供している。本システムは、命令プロセッサと、ランダ
ムアクセスメモリと、データファイルメモリとを具備す
るプログラム可能なコンピュータ、ハイレベル特徴定義
言語で表現された特徴定義を包含する特徴ファイルを読
取る手段、前記特徴定義の内部表現を発生するために前
記特徴ファイルを構文解析する手段、前記内部表現を前
記ランダムアクセスメモリ内に格納する手段、前記特徴
定義をフォントテーブル又はサブテーブル定義へ変換す
る手段、前記テーブル又はサブテーブル定義を前記デー
タファイルメモリ内に格納されているフォントファイル
へ書き出す手段、を有している。
【0009】一般的に、別の側面によれば、本発明は、
フォントへ活字特徴を付加するためのコンピュータプロ
グラムが記録されているコンピュータによって読取可能
な記録媒体が提供される。前記記録媒体は、コンピュー
タをして、ハイレベル特徴定義の言語で表現されている
特徴定義を包含する特徴ファイルを読取らせ、前記特徴
定義内部表現を発生させるために前記特徴ファイルを構
文解析させ、前記内部表現をメモリ内に格納させ、前記
特徴定義をフォントテーブル又はサブテーブル定義へ変
換させ、且つ前記テーブル又はサブテーブル定義をフォ
ントファイル内に書き出させる、上記各命令を有してい
る。
【0010】種々の実施形態において、本発明は、以下
の有益的な特徴の内の1つ又はそれ以上を包含すること
が可能である。本発明は、インクルード(includ
e)即ち包含メカニズムによって包含されている他のフ
ァイルを包含する特徴ファイルを読取り、且つ特徴ファ
イル内に見つかったエラーを報告する規則を抽出する。
それは、適宜、タイプによって該規則をグループ化し且
つ各グループの規則に対してどのテーブル及びサブテー
ブルフォーマットを使用するかを決定する。置換規則ス
テートメントから推論的に特定のフォントテーブル又は
サブテーブルを識別することが可能である。特徴定義か
らユーザの介入なしで共用データ構造を作成することが
可能であり、且つ特徴定義をフォントファイル内へ書込
む前に冗長性を除去することが可能である。特徴定義言
語は、サブテーブルフォーマット選択を表す構成体なし
で定義することが可能である。
【0011】本発明の実施化において得られる利点は以
下のうちの1つ又はそれ以上を包含している。ユーザが
定義した特徴を特徴ファイル内において特定することが
可能な柔軟性のある形式は多様なフォント特性を受付け
る。フォント特徴はデータファイル内において英語のよ
うな文法を使用して特定され、該データファイルは任意
のテキストエディタを使用して作成し且つ修正すること
が可能である。このことは著しい柔軟性を与え且つフォ
ントを作成しているか又は修正しているフォント編集者
の作業を著しく容易なものとさせる。フォント編集者は
基礎となるデータ構造の詳細について知ることが必要で
はない。ユーザはフォントデータ構造と1対1の態様で
あることに制限されることのない言語構成体を使用する
ことが可能である。適宜のフォーマットのサブテーブル
が自動的に選択される。フォントに対する修正は効率的
なファイルの格納を簡単化させる態様で行われる。共用
データに関しての最適化が実施され、そのことはフォン
トの寸法を減少させる。他のファイルを包含させるメカ
ニズムは、複数個のフォントに対して標準であるデータ
を共用するために使用することが可能である。パーサ即
ち構文解析器は、特徴ファイル内でエラーに遭遇した場
合に編集者に対してエラーをフィードバックさせる。グ
リフ名エイリアス(別名付与)用メカニズムを使用する
ことが可能である。全代替(aalt)特徴のアルゴリ
ズム作成が提供される。
【0012】
【発明の実施の形態】図1に示したように、本発明に基
づく特徴ファイル処理方法100は、特徴ファイルと呼
称されるフロントエンド編集可能テキストファイルを処
理する。本方法を実行するコンピュータシステムのユー
ザは、特徴ファイルを使用して、既存のフォントファイ
ル、特に、OpenType(商標)フォントファイル
に対する変更を定義するため、又はフォントファイルを
作成することが可能である。特徴ファイルは、ソース即
ち元のフォントを向上させるか又は補充することの可能
な例えばレイアウト特徴等の種々のタイポグラフィ即ち
活字(印刷を含む)特徴の仕様に対する簡単な論理ステ
ートメントを包含している。特徴ファイルはフォントテ
ーブル内のフィールドに対するオーバーライド(上書
き)値を包含することが可能である。特徴ファイルはハ
イレベル特徴定義言語で表現されている特徴定義を包含
しており、該言語の仕様は以下の例Aに記載しており、
且つその1例を以下の例Bに記載してある。該仕様から
理解することが可能であるように、該言語は英語のよう
な文法で表現された宣言論理ステートメントに基づいて
いる。別の実施例においては、特徴定義言語のステート
メントは英語以外の自然言語に対する自然言語のような
文法で表現することが可能である。
【0013】図1に戻って説明すると、特徴ファイルが
読取られ(ステップ102)且つ構文解析される(ステ
ップ104)。特徴ファイルの構文解析期間中に、各規
則のグリフパターンが最初に図3に示してあり且つ以下
に説明する内部表現へ変換し、それは無制限の複雑性及
び長さのグリフパターンを許容する(ステップ10
6)。グリフ名又はCID番号が最初にグリフIDへ変
換される。グリフIDへの変換は重要である。何故なら
ば、全てのOpenTypeレイアウトテーブルはグリ
フIDによってグリフを参照し、且つグリフ名又はCI
D番号によって参照するものではないからである。グリ
フエイリアシング(即ちエイリアス用)データベース
(例えば、オプションのデータベース450、図4)が
使用されている場合には、最終のグリフ名を派生するた
めに参照される。グリフエイリアシングデータベース
は、ホワイトスペース即ち空白部分によって離隔されて
いるライン当たりの2つのフィールドを有するテキスト
ファイルとして極めて簡単に実現することが可能であ
り、一方のフィールドはユーザフレンドリィグリフ名で
あり、他方のフィールドはフォントにおいて使用される
最終的なグリフ名である。例えば、最終的なグリフ名
「uni0394」はグリフエイリアスデータベースに
おいてより認識可能な名前である「Delta.gre
ek」へエイリアス即ち別名を付与することが可能であ
り、このことが行われ且つデータベースが使用される場
合には、そのグリフは特徴ファイルにおいて「Delt
a.greek」として参照することが可能である。
【0014】次いで、全ての規則における各グリフに対
して「グリフノード(glyphnode)」(データ
タイプ:GNode)を作成する。GNodeは、以下
のように、グリフID、フラグフィールド、次のシーケ
ンス及び他のGNodeへの次のクラスポインタを包含
している。
【0015】
【数1】
【0016】例えば、且つ図3を参照すると、グリフク
ラス@ONE及び@TWOは以下の如くに定義される。
【0017】
【数2】
【0018】以下の特徴ファイル規則
【数3】
【0019】は、両方ともGNodeに対するポインタ
であるターゲット及び交換によって内部的に表される。
この例は図3に示してあり、その場合に、説明の便宜
上、グリフIDではなくグリフ名が示されている。図3
において右側へ向いている矢印はnextSeqフィー
ルドを表しており、下側に向いている矢印はnextC
lフィールドを表している。
【0020】全てのタイプの置換規則(substit
ution rule)は、1個のターゲットパターン
と1個又はそれ以上の交換(replacement)
パターンへ還元させることが可能であり、且つ全てのタ
イプの位置決め規則は関連する位置情報を具備するター
ゲットパターンへ還元することが可能である。
【0021】図1に戻って説明すると、規則が認識され
(ステップ108)、タイプ毎にグループ化され(ステ
ップ110)、メモリの動的に割り当てられるアレイ内
に読み込まれる(即ち、格納される)(ステップ11
2)。例えば、特定のカーニング対のランは、クラスカ
ーニング対のランとは別個にグループ化される。何故な
らば、それらをフォント内に格納するのに必要な態様だ
からである。
【0022】データの種々の部分を適宜のビン内に蓄積
し且つ重複するものを取除くことによって可能な限り共
用される(ステップ114)。各組の規則は内部的にラ
ベルが与えられ、幾つかの組の規則が共用することが必
要であるか又は共用することが可能である場合には、そ
れらに同一の内部的なラベルが割り当てられ、従ってデ
ータ書込時に、それらはフォント内に一度だけ格納され
る。例えば、2つの別個GSUB特徴が同一の組のター
ゲットグリフに関して作用する場合には、この範囲のグ
リフは一度だけ格納され且つ該2つの特徴の各々によっ
てポイントされる。グリフクラス、即ち複数組のグリフ
はグリフのリンクされたリストとして表され、クラスデ
ータが最早必要とされない場合にはメモリが再使用され
る。別の実施例においては、その他のデータ構造を使用
することが可能である。
【0023】図2に示したように、本発明に基づく方法
200は特徴ファイルから派生された内部表現を変換し
且つフォント内に格納すべき実際のサブテーブル及びそ
の他のデータを作成する。各テーブルに対して(ステッ
プ202及び208)、最初に種々のサブテーブルフォ
ーマットオプションの寸法を計算し(ステップ204)
且つ次いで最も小さなものを選択(ステップ206)す
ることによってサブテーブル(subtable)の最
適化が実施される。このことは、幾つかのものが使用可
能である場合に、フォントエディタがどのサブテーブル
フォーマットを使用するかを特定することが必要でない
(実際には、不可能である)ことを意味している。
【0024】次いで、サブテーブル及びその他の出力デ
ータが作成される(ステップ210)。特徴ファイルに
おいて表現されている規則の内部表現が対応するフォン
トデータフォーマットへ変換される。関連するOpen
Typeフォントテーブル及びサブテーブルのフォーマ
ット及びセマンティクスはアドビ及びマイクロソフトか
ら入手可能なOpenTypeに関する参考文献に記載
されている。
【0025】図4に示したように、コンピュータシステ
ム402は例えばglyphName(グリフ名)対g
lyphID(グリフID)マッピング等の情報を供給
する入力フォントファイルとすることも可能なフォント
ファイル460内に格納されているフォント等のフォン
トに対する変更を定義するために使用することが可能で
ある。特徴ファイル440はシステム402又はテキス
トファイルを作成し且つ編集することの可能なその他の
システム上で任意のテキスト編集プログラム404を実
行するユーザによって作成することが可能である。特徴
ファイル処理プロセス410、即ち特徴プロセッサが動
作して特徴ファイルを読取り且つ図1及び2を参照して
上述した動作を実行する。プロセス410は任意の便利
なプログラミング言語を使用して任意の便利な態様でプ
ログラムすることが可能であり、例えば、それは特徴フ
ァイル440を読取り(モジュール412)且つパース
即ち構文解析を行い(モジュール414)、特徴ファイ
ルステートメントの内部表現430を作成し(モジュー
ル416)、内部表現を最適化し(モジュール41
8)、且つテーブル及びその他の出力を作成する複数個
のモジュールの形態に編成することが可能である。プロ
セス410は前述した如くオプションのグリフエイリア
スデータベース450を使用することが可能である。1
実施形態に置いては、特徴ファイルがコンパイルされ且
つ特徴ファイルから抽出された規則がテーブル作成モジ
ュール416へ供給される。この実施形態においては、
テーブル作成モジュール416へのインターフェース
は、作成プロセスがターゲットと交換GNodeによっ
て定義されるGNode表現の結果として極めて簡単で
ある。
【0026】図5に示したように、上述した特徴プロセ
ッサ410はコンピュータシステム上で稼動させること
の可能なフォント変換プロセス510、即ちフォントコ
ンバータの一部とすることが可能である。特徴ファイル
プロセスのように、フォントコンバータは任意の便利な
プログラミング言語を使用して任意の便利な態様でプロ
グラムすることが可能である。1実施形態においては、
特徴プロセッサ410はフォントコンバータ510に対
するサーバとして動作する。特徴プロセッサは特徴ファ
イル440及びオプションのグリフデータベース450
を読取り、且つ前述したようにフォントテーブルデータ
を発生する。フォントコンバータ510は、又、入力フ
ォント540を読取り且つ出力フォント550を発生
し、特徴ファイル440に従って特徴及び定義を付加又
は変化させる。有益的な実施形態においては、入力及び
出力フォントは異なるフォーマットのものであり、例え
ば、夫々、Type1及びOpenTypeである。
【0027】特徴定義言語はフォント生成環境において
容易に使用するために特に設計されている。それは多数
の興味のある特性を有している。
【0028】第一に、名前空間分離は必要な場合にのみ
発生し、そうでない場合には発生しない。例えば、言語
中において使用される通常最も一般的なエンティティ即
ち実体であるグリフ名は文脈によってキーワードから区
別される生の単語である。グリフ名がキーワードでもあ
る通常の場合(例えば、「feature」)、それは
最初のバックスラッシュによってグリフ名として表すこ
とが可能である(例えば、「\feature」)。グ
ラフシーケンスにおいてしばしば発生する名前付きグリ
フクラスは、通常、グリフ名と同様の名前を有してお
り、従って異なる名前空間を占有し、それらは「@」キ
ャラクタによって先行されている。特徴、言語及びスク
リプトタグ名、例えば「liga」は、グリフ名が発生
することが不可能である場合にのみ発生し、従って、そ
れらも生の単語である。これらの言語特徴はフォントエ
ディタが使用することが必要な特別のキャラクタの数を
最小とさせている。
【0029】第二に、該言語は例えOpenTypeフ
ォント使用自身によってサポートされていない場合であ
っても、一度に複数個のグリフに関して共通の操作を実
施することを可能としている。例えば、「ONE ha
lf」に対する合字置換は、例えOpenTypeフォ
ント自身が特定の規則を格納することが可能であるに過
ぎない場合であっても、以下の如くにして簡単に示すこ
とが可能である。
【0030】
【数4】
【0031】この例においては、ソフトウエアはシーケ
ンス「@ONE slash @TWO」のクロスプロ
ダクト (cross product)をとり且つ該規
則を別個にフォント内に格納する。このことは、16個
(この例の場合)の別々の規則をタイプアウトせねばな
らないエラーが発生しやすい別法からエディタを解放し
ている。
【0032】単一の置換は特徴定義言語において及びO
penTypeフォーマット自身において両方とも複数
個のグリフに関してサポートされている。例えば、以下
の如くである。
【0033】
【数5】
【0034】従って、エディタ (フォント編集者)は実
際にフォント内に格納する場合に規則を拡張することが
必要であるか否かを知ることは必要でない。
【0035】第三に、該言語は規則のタイプの自動検知
を与えるために処理することが可能である。従って、フ
ォントエディタ即ちフォント編集者は2種類の規則、即
ち置換 (substitution)及び位置決め (p
ostioning)について知っていることが必要で
あるに過ぎない。規則はキーワード「substitu
te」又は「position」 (それらは、夫々、
「sub」又は「pos」として省略することが可能で
ある)によって導入される。該規則の残部のタイプは全
ての共通の場合において自動検知され、単に1つの付加
的なキーワードが例えばGPOSルックアップタイプ3
−6のような使用頻度の低い位置決め規則を明確化させ
るために必要とされるに過ぎない。例えば、以下の如く
である。
【0036】
【数6】
【0037】第四に、該言語は複数個のマスタ及びキャ
ラクタ識別子 (CID)フォントの継ぎ目のない統合を
与える。全てのマスタに対して同一である場合には、マ
ルチマスタメトリクスを、単一のマスタフォントの場合
のように、生の数字で示すことが可能である。例えば、
【数7】
【0038】は、6マスタフォントに対する以下のもの
と同一である。
【0039】
【数8】
【0040】これは便利であり且つエラーの可能性を減
少させる。勿論、複数個のマスタに対して値が異なるも
のである場合には、それらは以下の如くに特定されねば
ならない。
【0041】
【数9】
【0042】CIDフォントの取扱いにおける差異も小
さいものである。CIDフォントの場合には、グリフ名
の代わりに、グリフのCID番号 (数値と区別するため
にバックスラッシュによって先行されている)を特定す
ることが必要である。
【0043】本発明は、デジタル電子回路、又はコンピ
ュータハードウエア、ファームウエア、ソフトウエア又
はそれらの組合せで実現することが可能である。本発明
装置は、プログラム可能なプロセサによって実行する本
発明方法のコンピュータプログラムを記録させたコンピ
ュータによって読取可能な記録媒体として実現すること
が可能であり、且つ本発明の方法ステップは、入力デー
タについて操作を行い且つ出力を発生することによって
本発明の手順を実行する命令からなるプログラムを実行
するプログラム可能なプロセッサによって実施すること
が可能である。本発明はデータ記憶システムからデータ
及び命令を受取り且つデータ記録システムへデータ及び
命令を送信するために結合されている少なくとも1個の
プログラム可能なプロセッサ、少なくとも1個の入力装
置、少なくとも1個の出力装置を有するプログラム可能
なシステム上で実行することの可能な1つ又はそれ以上
のコンピュータプログラムを格納する記録媒体として実
現することが可能である。各コンピュータプログラムは
ハイレベル手順又はオブジェクト指向型プログラミング
言語で、又は、所望により、アッセンブリ又はマシン言
語で実現することが可能であり、且つ、いずれの場合に
おいても、該言語はコンパイル型又はインタプリタ型の
言語とすることが可能である。適宜のプロセッサとして
は、1例として、汎用及び特定目的用のマイクロプロセ
ッサ等がある。一般的に、プロセッサはリードオンリメ
モリ及び/又はランダムアクセスメモリから命令とデー
タとを受取る。通常、コンピュータはデータファイルを
格納するための1つ又はそれ以上の大量記憶装置を有し
ており、このような装置としては、内部ハードディスク
及び着脱自在なディスク等の磁気ディスク、MOディス
ク、光学的ディスク等がある。コンピュータプログラム
命令及びデータを格納するのに適した記憶媒体として
は、例えばEPROM、EEPROM等の半導体記憶装
置を包含する全ての形態の非揮発性メモリ、及びフラッ
シュメモリ装置、内部ハードディスク及び着脱自在なデ
ィスク等の磁気ディスク、及びMOディスク、CD−R
OMディスク等がある。前述したもののいずれもASI
C (応用特定集積回路)によって補充されるか又はその
中に組込むことが可能である。
【0044】ユーザとの対話を与えるために、本発明は
例えばユーザに対して情報を表示するためのモニタ又は
LCDスクリーン等のディスプレイ装置、キーボード、
ユーザがコンピュータシステムへ入力を与えることの可
能なマウス又はトラックボール等のポインティング装置
等を具備するコンピュータシステム上で実現することが
可能である。コンピュータシステムはそれによってコン
ピュータプログラムがユーザと対話を行うグラフィカル
ユーザインターフェースを与えるようにプログラムする
ことが可能である。
【0045】例A−特徴ファイル仕様 1.緒論 OpenType特徴ファイルは読むのが簡単なフォー
マットでのOpenTypeフォントに対する特徴仕様
を包含しているテキストファイルである。それは、又、
フォントテーブル内のあるフィールドに対するオーバー
ライド値即ち上書き値を包含することが可能である。以
下のものは完全な特徴ファイルの1例である。
【0046】
【数10】
【0047】この例のファイルはfi及びfl合字 (l
igature)の形成を特定している。
【0048】2.シンタックス 2.a.コメント 「#」キャラクタはコメントの開始を表し、そのコメン
トはそのラインの終りまで続く。
【0049】2.b.ホワイトスペース ホワイトスペース即ち空白部分は区切り用のトークンを
除いて有意性があるものではない。
【0050】2.c.キーワード 以下のものは特徴ファイルの特徴定義言語のキーワード
である。
【0051】 anonymous(又はanon) by cursive device enumerate(又はenum) except excludeDFLT feature include includeDFLT language lookup lookupflag mark nameid position(又はpos) required script substitute(又はsub) subtable table サポートされるテーブルフィールド名は以下のものを包
含している。
【0052】 HorizAxis.BaseTagList #BASEテーブル HorizAxis.BaseScriptList HorizAxis. MinMax VertAxis. BaseTagList VertAxis. BaseScriptList VertAxis. MinMax GlyphClassDef #GDEFテーブル Attach LightureCaret ContourPoint FontRevision #headテーブル CaretOffset #hheaテーブル Panose #OS/2テーブル TypoAscender TypoDescender TypoLineGap Xheight CapHeight VertTypoAscender #vheaテーブル VertTypoDescender VertTypoLineGap 以下のものはタグが予測される場合のみのキーワードで
ある。
【0053】 DFLT 2.d.特別キャラクタ 特別キャラクタは以下のテーブルにリストされている。
【0054】 # シャープ コメントの開始を示す ; セミコロン ステートメント終了 , カンマ 例外文節においてグリフシーケンスを分離 ‘ 引用符 文脈置換のためのグリフ又はグリフクラスの印付け @ アットマーク グリフクラス名を識別 \ バックスラッシュ CIDを識別し、グリフ名を同一のキーワードから 区別する − ハイフン グリフクラス内のグリフ範囲を示す = 等記号 グリフクラス割り当てを示す {} ブレース 特徴、ルックアップテーブル又は匿名ブロックを取 囲む <> 山括弧 マルチマスタメトリクスに対するマスタ値を取囲む [] 角ブラケット グリフクラスのコンポーネントを取囲む () 括弧 インクルードされるべきファイル名を取囲む 2.e.数字 <number>は符号付き十進数の整数(先行するゼロなし)である。例え ば、 -150 1000 であり、それはグリフの位置決め及び種々のテーブルフ
ィールドの値を表すために使用される。
【0055】<fixed point number
>はheadテーブル内のFontRevision値
に対して必要とされる。整数部及び小数部は十進数表示
で特定すべきである。例えば、 FontRevision 1.10 #フォント内において0x0001
A000として格納される 2.f.グリフ グリフはグリフ名又はCID番号のうちの1つによって
表される。グリフ名は以下のセットからのキャラクタで
構成される。
【0056】 A−Z a−z 0−9 . (ピリオド) _ (下線) それは数字又はピリオドで開始することはない。唯一の
例外は特別キャラクタ「.notdef」である。例え
ば、「twocents」、「al」、「_」は有効な
グリフ名であり、且つ「2cents」及び「.two
cents」は有効なグリフ名ではない。
【0057】最初のバックスラッシュはグリフ名を同一
のキーワードから区別する機能を有している。例えば、 \substitute #グリフ名 であり、グリフ名エイリアスデータベースが使用される
場合には、エイリアス(即ち、別名)を特徴ファイルに
おいて使用することが可能である。CIDはバックスラ
ッシュによって先行される十進数で表され、例えば、 \101 \0 である。
【0058】2.g.グリフクラス グリフクラスはシーケンス内の単一のグリフ位置を表し
且つ角ブラケットで取囲んだグリフからなるリストによ
って示される。例えば、 [endash emdash figuredash] であり、グリフクラスを包含するシーケンスの1例は、 space[endash emdash figuredash]space であり、複数個のグリフからなる範囲はハイフンによっ
て示され、即ち、 [<firstGlyph>−<lastGlyph>] であり、例えば、 [\0−\31] [A−Z] であり、CIDフォントの場合には、その順番付けはC
IDの順番付けである。非CIDフォントの場合には、
順番付けはフォント内のグリフの順番付けとは独立して
いる。<firstGlyph>及び<lastGlyph>は同一の長さ
でなければならず、且つ、 1.大文字又は小文字のA−Zからの単一の文字、例え
ば、 [Aswash−Zswash] [a−z] この範囲は、グリフ名の残部を同一に維持しながら、異
なる文字をインクリメントさせることによって拡張され
る。
【0059】2.連続するランにおいて最大で3個まで
の十進数字、例えば、 [ampersand.01−ampersand.58] この範囲はグリフ名の残部を同一に維持しながら数値を
インクリメントすることにより拡張される。
【0060】の点で異なることが可能である。
【0061】以下のものはグリフ名の長さが異なるので
有効なグリフクラスではない。
【0062】 [ampersand.1−ampersand.58] #無効 注意すべきであるが、 [zero−nine] は有効なグリフ範囲ではない。それは以下のように明示
的に列挙されるものでなければならない。
【0063】@digits= [zero one two three four fi
ve six seven eight nine] グリフクラスはそれに対してグリフ名を割り当てること
によって命名することが可能であり、それは「@」キャ
ラクタで開始するものであり、後にそのグリフクラス名
で参照することが可能である。例えば、 @dash=[endash emdash figuredash]: #割り当て space @dash space #使用 「@」の後のグリフクラス名の部分はグリフ名に適用さ
れる同一の名前制限が適用される。グリフクラス割り当
ては特徴ファイル内のどこにおいても表れることが可能
である。グリフクラス名はそれを定義した後においての
み特徴ファイル内において使用することが可能である。
グリフクラス名が角ブラケット内において発生する場合
には、その要素が単に定義中のグリフクラス内の他の要
素へ付加される。例えば、 @Vowels.lc=[a e i o u]; @Vowels.uc=[A E I O U]; @Vowels.=[@Vowels.lc@Vowels.uc y Y]; である場合に、最後のステートメントは、 @Vowels=[a e i o u A E I O U y Y]; と等価である。グリフクラス名が別の単一のグリフクラ
ス名へ割り当てられる場合には角ブラケットは必要では
ない。例えば、以下の通りである。
【0064】 @Figures_lining_tabular=@FIGSDDEFAULT; 範囲、グリフ及びグリフクラス名は1個のグリフクラス
に結合させることが可能である。例えば、以下の通りで
ある。
【0065】[zerooldstyle-nineoldstyle ampersandol
dstyle@smallCaps] 注意すべきことであるが、特徴ファイルのグリフクラス
はOpenTypeレイアウトのグリフクラスと混乱し
てはならない。
【0066】2.h.タグ タグは、最終的なスペースなしでタグ名によって示さ
れ、且つ文脈によりグリフ名から区別される。例えば、 DUE であり、この例における最後の空間は暗示的である.特
別のタグ「DFLT」でありデフォルト言語を示す。
【0067】2.i.ルックアップブロックテーブル グリフ名で適用される制限はルックアップブロックラベ
ルにも適用される。
【0068】3.ファイルのインクルード ファイルのインクルード (include)は以下のよ
うに表される。
【0069】Include(<filename>) 有限のインクルードループ (互いにインクルードするフ
ァイル)を確保するために、例えば5等の最大のインク
ルード深さを実現することが可能である。
【0070】4.特徴の特定 4.a.特徴 各特長は以下の形態を有する特徴ブロックで特定され
る。
【0071】
【数11】
【0072】特徴の開始における言語及びスクリプト
は、夫々、「latn」及び「DFLT」へデフォルト
される。ルックアップフラグ属性は0へデフォルトされ
る。
【0073】4.b.言語 言語属性は、明示的に変化されるまで、スクリプトが変
化されるまで、又はその特徴の終りまで同一の状態を維
持する。以下の形態のステートメントは言語属性をセッ
トするために使用することが可能である。
【0074】Language<language tag>; 例えば、 language DEU; であり、スクリプト及びルックアップフラグ属性は前と
同じく同一のままである。
【0075】特定の特徴に対する言語特定ルックアップ
はデフォルトによってDELTルックアップを受け継
ぐ。このことが望ましくない場合には、「exclud
eDELT」キーワードが言語タグに追従せねばならな
い。例えば、 language DEU excludeDFLT; であり、キーワード「includeDFLT」は、デ
フォルトのDFLTルックアップ受け継ぎ動作を明示的
に表すために使用することが可能である。たとえば、 DEU includeDFLT;#言語DEUと同じ; キーワード「required (必須)」が存在する場
合には、特定した言語システムに対する必要とされてい
る特徴として現在の特徴を特定する (スクリプト/言語
組合せ)。
【0076】4.c.スクリプト スクリプト属性は、明示的に変化されるまで、又は該特
徴の終りまで同一の状態に留まる。以下の形態のステー
トメントをスクリプトを変化させるために使用すること
が可能である。
【0077】Script<script tag>; 例えば、 script kana; 言語は暗示的にDFLTへ設定され且つルックアップフ
ラグ属性は暗示的にゼロへセットされる。
【0078】4.d.ルックアップフラグ OpenTypeフォントファイル仕様はルックアップ
テーブルにおけるルックアップフラグフィールドを記述
する。ルックアップフラグ属性は明示的に変化されるま
で、スクリプトが変化されるまで、又はフィーチャの終
りまで同一に留まる。以下の形態のステートメントをル
ックアップフラグ属性を変化させるために使用すること
が可能である。
【0079】Lookupflag<number>; 例えば、 lookupflag 2; #二進数における「10」;IgnoreBaseGly
phsフラグをセット 4.e.ルックアップ フォントテーブルの異なる部分をして同一のルックアッ
プを参照させるために一連の規則にラベル付けをし且つ
後に明示的に参照することが可能である。ラベルを使用
することは、ユーザが重複する組の規則を維持すること
から解放することに加えてフォントの寸法を減少させ
る。以下の形態のステートメントをルックアップを定義
し且つラベルを付けるために使用することが可能であ
る。
【0080】
【数12】
【0081】後にそれを参照するためには、以下の如く
記述する。
【0082】Lookup<label>; 例えば、以下の通りである。
【0083】
【数13】
【0084】ラベル付けをしたブロックは文字通りフォ
ント内の単一のルックアップを定義するので、そのルッ
クアップブロック内の規則は同一のルックアップタイプ
のものでなければならず且つ同一のルックアップフラグ
属性を有するものでなければならない。ルックアップブ
ロックは別の種類のブロックを包含することは不可能で
ある。
【0085】4.f.サブテーブル サブテーブル (subtable)ブレークは、必要と
される場合に、特定のルックアップに対する規則の間に
挿入される。「subtable」キーワードは以下の
ようにして使用することが可能である。
【0086】Subtable; これは、前の規則の後にサブテーブルブレークを強制的
に挿入する。
【0087】4.g.例 以下の例は言語特定規則を有する特徴ブロックを示して
いる。デフォルト属性はコメント中に表してある。
【0088】
【数14】
【0089】上の例においては、ch及びck合字置換
は、言語がドイツ語である場合にのみ適用される。f
f、fi、fl合字置換はラテンスクリプトにおける全
ての言語(ドイツ語を含む)に対して適用される。
【0090】次の例はラベル付けしたルックアップブロ
ック及びexcludeDFLTキーワードの使用を例
示している。
【0091】
【数15】
【0092】ffi及びfi合字置換は、言語がトルコ
語である場合には適用されない。注意すべきであるが、
lookup[x]はlookup[y]の前に配置さ
れねばならない。何故ならば、fii置換はff置換に
先行せねばならないからである。 (特徴ファイルにおけ
るルックアップ及び規則の順番付けの以下の説明を参照
すると良い)。特定のルックアップ内の合字規則の順番
は問題ではない。例えば、lookup[x]におい
て、fi置換はffi置換の前に配置させることが可能
である (合字置換の以下の説明を参照)。
【0093】5.グリフ置換 (GSUB)規則 5.a.[LookupType1]単一置換 以下の形態のステートメントは単一の置換を定義する。
【0094】 substitute <glyph> by <glyph>; substitute@glyph class by <glyph class>; キーワード「substitute」 (置換)は「su
b」として省略することが可能であり、例えば、以下の
通りである。
【0095】 Sub a by Asmall; Substitute [a-z] by [Asmall-Zsmall]; Subsitute@Capitals by@CapSwashes グリフクラスを包含する規則は、そのクラスに特定され
た順番でテーブルが作成される場合に列挙される。従っ
て、ターゲット及び交換グリフクラス内の要素の数は同
一でなければならない。上の例の2番目のラインは以下
のようにフォント内において同一の表示を発生する。
【0096】 substitute a by Asmall; substitute b by Bsmall; substitute c by Csmall; #... substitute z by Zsmall; 5.b. [LookupType2]マルチ置換 以下の形態のステートメントはマルチ置換を定義するた
めに使用することが可能である。
【0097】 Substitute <glyph> by <glyph sequence>; <glyphsequence>はグリフクラスを包含
することは不可能であり、包含していた場合には、どの
ターゲットシーケンスが必要とされるかに関しての規則
が不明確である。例えば、 substitute ffi by f f i; #合字分解 5.c.[LookupType3]代替置換 以下の形態のステートメントは代替置換を行うために使
用することが可能である。
【0098】Substitute <glyph> from <glyph class>; 例えば、 substitute ampersand from [ampersand.1 ampersand.2
ampersand.3]; 5.d.[LookupType4]合字置換 以下の形態のステートメントは合字置換を定義するため
に使用することが可能である。
【0099】Substitute <glyph sequence> by <glyph
>; <glyphsequence>はグリフクラスを包含
することが可能であり、例えば、 substitute [one oneoldstyle][slash fraction][two t
wooldstyle] by onehalf; である。OpenType仕様はグリフクラスを包含す
るターゲットシーケンスに関し合字置換を特定すること
を許容するものではないので、<glyphseque
nce>においてグリフクラスが検知される場合には全
ての特定のグリフシーケンスが自動的に列挙される。従
って、上の例は以下の如く、あたかも全てのシーケンス
が手作業によって列挙されたかのようにそのフォントに
おいて同一の表現を発生する。
【0100】
【数16】
【0101】連続する組の合字規則は任意の特定の態様
で順番付けされることを必要とするものではなく、特徴
ファイルが処理される場合に適宜のソーティングが行わ
れる。従って、 sub f f by ff; sub f i by fi; sub f f i by ffi; sub o f f i by offi; は、次のようにそのフォントにおいて同一の表現を発生
する。
【0102】sub o f fi by offi; sub f f i by ffi; sub f f by ff; sub f i by fi; 5.e.[LookupType5]文脈置換 このLookupTypeは文脈置換をチェーン化する
GSUBLookupType6の機能的サブセットで
ある。従って、このLookupTypeの全ての所望
の規則はチェーン化文脈置換規則によって表すことが可
能である。
【0103】5.f.[LookupType6]チェ
ーン化文脈置換 グリフ文脈内の1つの単一又は1つの合字置換に対する
チェーン化文脈置換は、オプションの例外と共に、以下
の如くに表される。
【0104】[except <glyph sequence list>] #この
規則に対する例外 (オプション) substitute <marked glyph sequnce> #マーク付けした
サブランを有するターゲット文脈 by <replacement glyph or glyph class>; #サブラン
交換シーケンス <glyphsequence>は1個又はそれ以上の
グリフ又はグリフクラスを有している。<glyphs
equencelist>は<glyphsequen
ce>のカンマで分離したリストである。
【0105】<markedglyphsequnce
>は、グリフ又はグリフクラスの1つ又はそれ以上のサ
ブランが識別されている即ちマーク付けされている<g
lyph sequence>である。サブラン (su
b−run)は、そのメンバー要素の各々の後に単一の
引用符 ( ‘)を挿入することによってマーク付けされ
る。然しながら、2つ又はそれ以上のサブランが連続し
ている場合には、それらは1つのサブランの要素を単一
の引用符でマーク付けし且つ隣接するサブランの要素を
二重引用符 (”)でマーク付けすることによって区別す
ることが可能である。
【0106】これらのサブランはこの規則によって呼び
出されるルックアップのターゲット文脈を表す。マーク
付けしたグリフの各このようなサブランは、順番が、交
換<glyphsequencelist>における交
換グリフシーケンスに対応せねばならない。
【0107】例外 (除外)文節が存在しており且つ<m
arkedglyphsequence>におけるどの
グリフもマーク付けされていない場合には、<mark
edglyph sequence>内の全てのグリフ
がマーク付けすべくとられる。例えば、 substitute [a e n] d′by d.alt; の規則は、「ad」又は「ed」又は「nd」のシーケ
ンスにおいて、「d」を「dalt」で置換することを
意味している。
【0108】オプションの「except」文節は例外
(除外)をリストし且つ置換ステートメントに先行し、
これがフォント内に格納される態様を鏡映する。例え
ば、上の例に例外文節が付加された以下の場合について
検討する。
【0109】 except f [a e] d, a d d substitute [a e n]d′by d.alt; 例外文節は「fa d」、「fe d」、又は「a d d」のシ
ーケンスに対して置換が発生すべきでないことを特定す
る。
【0110】以下の例は単語の境界においてどのように
して合字を置換することが可能であるかを示している。
【0111】
【数17】
【0112】例えば「init」特徴及び「fina」
特徴等のある特徴が1つの単語の始め又は終りにおける
グリフをターゲットするに過ぎない場合には、その特徴
を有するフォントを使用するアプリケーションプログラ
ムはその単語の境界を検知するものとさせることが可能
であり、その特徴自身は単語の境界に拘わらずに適切な
置換として単純に定義される。このようなアプリケーシ
ョンの役務は特徴タグレジストリィ内に記述すべきであ
る。
【0113】6.グリフ位置決め(GPOS)規則 6.a.共通データタイプ グリフ位置決めはメトリクス、装置テーブル、値記録及
びアンカーによって特定される。
【0114】6.a.iメトリクス 単一マスターフォントに対する<metric>値は単
に<number>である。マルチマスターフォントに
対するメトリクス値は山括弧で取囲まれた<numbe
r>からなるアレイによって示される。各<numbe
r>はマスターに対するメトリクス値を表しており、そ
の順番はオリジナルのフォントにおけるマスターの順番
と同一である。該アレイ内の<number>の数はそ
のフォント内のマスターの数と等しくなければならな
い。例えば、 <-140 -160> は、最初のマスター(2つのマスターを有するフォント
において)に対するメトリクスが-140であり且つ2
番目のマスターに対するメトリクスが-160であるこ
とを意味する。その値が全てのマスターに対して一定で
ある場合には、山括弧なしで単一の<number>を
使用することが可能である。例えば、以下の通りであ
る。
【0115】 1000 #4マスターフォントに対する<1000 1000 100
0 1000>と等価 6.a. ii. 装置テーブル <device>は単一の装置テーブルを表し、以下の
フォーマットを有している。
【0116】device(<ppem size><number>)+ 例えば、 device 11 -1 12 -1 #11ppem及び12ppemにおいて-
1だけ調節 <device>のリスト内において必要とされる場合
に、ヌル即ちnullの<device>は以下のよう
に表される。
【0117】device 0 6.a. iii.値記録 <valuerecord>は幾つかのフォーマットの
うちの何れかをとることが可能である。
【0118】
【数18】
【0119】<valuerecord>フォーマット
A内の<metric>は、Y前進調節を表す場合であ
る「vkrn」特徴において定義されている場合を除い
て、X前進調節を表す。これは最も簡単な<value
record>フォーマットである。それはカーニング
に対して最も一般的に使用される調節を表す。<val
uerecord>フォーマットBにおける<metr
ic>はX配置、Y配置、X前進、Y前進に対する調節
をその順番で表す。<valuerecord>フォー
マットCにおける<metric>はフォーマットBに
おけるものと同一の調節を表し、<device>はX
配置、Y配置、X前進、Y前進に対する装置テーブルを
その順番で表す。このフォーマットはユーザがOpen
Type値記録の完全なる機能性を表現することを可能
とさせる。
【0120】これらの調節はそのフォント内に設けられ
ている配置及び前進の値に対して加算すべき(正の値)
又は減算すべき(負の値)の値(設計単位において)を
表す。<valuerecord>の幾つかの例は以下
のとおりである。
【0121】
【数19】
【0122】3番目の例は、X配置及びX前進に対する
11及び12ppem寸法における装置調節のみならず
X配置及びX前進に対する調節を特定する。
【0123】6.a. iv.アンカー <anchor>は4つのフォーマットのうちの何れか
におけるアンカー点を特定する。
【0124】 # <anchor> format A, the null anchor: 0 #X座標、Y座標 # <anchor> format B: <number> <number> #X座標、Y座標 # <anchor> format C: <number> <number> <number> #X座標、Y座標、 #輪郭点インデックス #<anchor> format D: <number> <number> <device> <device> #X座標、Y座標、 #X座標装置テーブル、 #Y座標装置テーブル 例えば、 0 #フォーマットA 120 -20 #フォーマットB 120 -20 5 #フォーマットC;輪郭点インデッ クスは5 120 -20 device 11 1 device 0 #フォーマットD 6.b.[LookupType1]単一調節位置決め 以下の形式のステートメントは単一調節位置決めを行う
ために使用することが可能である。
【0125】position <glyph * glyphclass> <value r
ecord> キーワード「position」は「pos」として省
略することが可能である。例えば、グリフの左側及び右
側のサイドベアリングの各々を80設計単位だけ減少さ
せるためには以下のようにする。
【0126】position one -80 0 -160 0; 6.c.[LookupType2]対調節位置決め このLookupTypeに対する規則はカーニングの
ために使用され、且つ2つのフォーマットの内の何れか
とすることが可能である。
【0127】 # PairPos format A: positon <glyph * glyphclass> <glyph * glyphclass> <valuerecord>; # PairPos format B: [現在サポートされていない] position <glyph * glyphclass> <glyph * glyphclass> <valuerecord>,<valuerecord>; フォーマットBにおいては、<valuerecord
>は最初の<glyph*glyphclass>に対
応しており、2番目の<valuerecord>は2
番目のものに対応している。フォーマットAにおいては
<valuerecord>は<glyph*glyp
hclass>に対応している。従って、それは、 position <glyph * glyphclass> <glyph * glyphclass>
<valuerecord>,0; を表すより短い態様である。
【0128】従って、カーニングはPairPosフォ
ーマットA及び<valuerecord>フォーマッ
トAで最も容易に表現することが可能である。これは最
初のグリフのY前進を調節する場合である「vrkn」
特徴における場合を除いて、最初のグリフのX前進を調
節することとなる。幾つかの単一マスター例としては以
下のようなものがある。
【0129】 pos Y space -100; #特定対 pos\101\201 -200; #特定対 pos T [a e u] -100; #クラス対(第一グリフをクラスへ変換) pos@T@xheight -80; #クラス対 幾つかのマルチマスター例としては以下のようなものが
ある。
【0130】 pos Y space <-90 -100 -95 -105>; #特定対;4マスターフォント pos@T [a e u] <-60 -70>; #クラス対;2マスターフォント 特定のグラフ対は特徴ファイル内におけるグリフクラス
対に先行すべきであり、それらがフォント内に格納され
る態様を鏡映する(特徴ファイル内のルックアップ及び
規則の順番付けに関しては以下の説明を参照)。
【0131】以下の形式のステートメントをカーニング
を定義するために使用することが可能である。
【0132】
【数20】
【0133】以下の例においては、フォントに対する全
てのカーニングデータは「latn」、「cyrl」、
「grek」のスクリプトの下で共用される。
【0134】
【数21】
【0135】幾つかの特定のペア(pair)即ち対を
クラス対としてより便利に表すが、ユーザがその対をク
ラスカーニングサブテーブル内に存在することを所望し
ない場合には、そのクラス対はキーワード「enume
rate」(それは、「enum」として省略すること
が可能)によって先行されるべきである。このような対
は特定対として列挙される。従って、これらの対はクラ
ス対に対する「クラス例外」として考えることが可能で
ある。例えば、 @Y_LC=[y yacute ydieresis]; @SMALL_PUNC=[comma semicolon period]; enum pos@Y_LC semicolon -80; #特定対 pos f quoteright 30; #特定対 pos@Y_LC@SMALL_PUNC -100; #クラス対 上のenum規則はフォント内の表現を変化させること
なしに以下のものと交換することが可能である。
【0136】 pos y semicolon -80; pos yacute semicolon -80; pos ydieresis semiclon -80; 特徴ファイルがコンパイルされる場合には、クラスオー
バーラップに起因して単一のサブテーブルを作成するこ
とができない場合には、クラス対規則のラン内にサブテ
ーブルブレークを挿入する。警告を発生すべきである。
例えば、 pos [Ygrave][colon semicolon] -55; #[line 99]第一サブテーブル内 pos [Y Yacute] period -50; #[line 100]第一サブテーブル内 pos [Y Yacute Ygrave] period -60; #[line 101]第二サブテーブル内 は、新たなサブテーブルがライン101において開始し
たこと、及びこのサブテーブル内の幾つかのカーニング
対は決してアクセスされる場合がないことの警告を発生
すべきである。上の例が全体的なルックアップを構成し
ている場合には対(Ygrave,period)は0
の値を有している。何故ならば、Ygraveは第一サ
ブテーブルの範囲内(即ち、第一グリフの結合)にある
からである。
【0137】時折、クラスカーニングサブテーブルは大
きくなり過ぎる場合がある。ユーザは、 subtable; を2つのクラスのカーニング規則の間において特定する
ことによって適宜の点に強制的にサブテーブルブレーク
を入れることが可能である。新たに形成されたサブテー
ブルは未だに同一のルックアップ内にあり、従ってユー
ザはそのようにして作成されたサブテーブルの範囲がオ
ーバーラップしないことを確保せねばならない。例え
ば、以下の通りである。
【0138】 pos [Y Yacute] period -50; #第一サブテーブル内 subtable; #サブテーブルブレークをここに強制挿入 pos [A Aacute Agrave] quoteright -30 #第二サブテーブル内 サブテーブルのステートメントが存在しない場合には、
両方の規則が同一のサブテーブル内で表される。
【0139】6.d.[LookupType3]カー
シブ(cursive)取付位置決めこのLookup
Typeは以下のように表現される。
【0140】position cursive <glyph * glyphclass>
<anchor>, <anchor>; <anchor>は<glyph*glyphclas
s>に対するエントリアンカー点を表しており、2番目
のものは出口アンカー点を示している。例えば、グリフ
meem.medialのエントリ点がx=500,y=
20にあり且つ出口点がx=0、y=-20にあるように
定義するためには、 position cursive meem.medial 500 20, 0 -20; である。グリフは定義したエントリ点、出口点、又は両
方を有することが可能である。<anchor>フォー
マットAは<anchor>が定義されていないことを
表すために使用される。
【0141】6.e.[LookupType4]マー
ク対ベース取付位置決め この位置決め規則は、 position <base glyph * glyphclass> mark <mark glyp
h * glyphclass> <base anchor>; であり、尚<baseanchor>は<anchor
>の形態のものである。マーク(mark)グリフの全
てのアンカー点は「mark」ステートメントによって
特徴ファイル内において前もって定義されていなければ
ならない。例えば、acte及びgraveの前に定義
したアンカー点をグリフa,e,i,o,uのアンカー
点x=250,y=450に位置決めさせるためには、 position [a e i o u] mark [acute grave] 250 450; であり、キーワード「mark」はLookupTyp
es4−6内のマークである<glyph*glyph
class>に常に先行する。
【0142】markグリフに対するアンカー点は、最
初に、以下のマークステートメントによって定義されね
ばならない。
【0143】mark <mark glyph * glyphclass> <anchor
>; 例えば、chute及びgraveのマークグリフのア
ンカーがx=30,y=600にあるように特定するた
めには、 mark [acute grave] 30 600; である。
【0144】6.f.[LookupType5]マー
ク対合字取付位置決め このLookupTypeは、 position <ligature glyph * glyphclass> mark <mark glyph * glyphclass> <ligature anchors>; として表され、尚<ligatureanchors>
は少なくとも2つの<anchor>のカンマで分離さ
れたリストである。そこには少なくとも2つ存在せねば
ならない。何故ならば、これがマーク対ベース取付位置
決め規則からこの規則を区別する唯一の態様だからであ
る。合字グリフ内に存在するコンポーネントと同数の<
anchor>が存在せねばならず、各<anchor
>は、順番が、1つの構成要素に対応している。特定の
構成要素がアンカー点を定義するものでない場合には、
その対応する<anchor>が「0」(<ancho
r>formatA)に設定されねばならない。
【0145】LookupType4におけるように、
全てのマークグリフのアンカー点は「mark」ステー
トメントによって前もって特徴ファイル内において定義
されていなければならない。このLookupType
に対するOpenType仕様における例は以下のよう
に表すことが可能である。
【0146】
【数22】
【0147】6.g.[LookupType6]マー
ク対マーク取付位置決め このLookupTypeは以下の如くに表される。
【0148】 position mark <base mark glyph * glyphclass> mark <mark glyph * glyphclass> <base mark anchor>; この規則は最初の「mark」キーワードによってマー
ク対ベース取付位置決め規則から区別される。Look
upType4におけるように、全てのマークグリフの
アンカー点は「mark」ステートメントによって前も
って特徴ファイル内において定義されていなければなら
ない。このLookupTypeに対するOpenTy
pe仕様における例は以下のように表すことが可能であ
る。
【0149】
【数23】
【0150】6.h.[LookupType7]文脈
位置決め このLookupTypeは文脈位置決めをチェーン化
するGPOSLookupType8の機能的サブセッ
トである。従って、このLookupTypeの全ての
所望の規則はチェーン化文脈位置決め規則によって表す
ことが可能である。
【0151】6.i.[LookupType8]チェ
ーン化文脈位置決め このLookupTypeは以下のように表される。
【0152】 [except <glyph sequence list>] #この規則に対する例外(オプショ ン) position <marked glyph sequence> #マーク付けしたサブランを有する ターゲット文脈 by <valuerecord * anchor list>; #サブラン位置決め <valuerecord*anchorlist>は
<valuerecord>及び<anchor>のカ
ンマで分離したリストである。
【0153】<glyphsequencelist>
及び<markedglyph sequence>
は、<markedglyphsequence>にお
けるサブランがGPOSLookupType3−6の
ターゲット文脈において使用されるようにキーワード
「cursive」及び「mark」を包含することが
可能であることを除いて、チェーン化文脈置換に関する
セクションにおけるものと同一である。更に、各サブラ
ンと関連する<valuerecord*anchor
list>における<valuerecord>又は<
anchors>の数はそのサブランをマーク付けする
ために使用される単一引用符又は二重引用符の数によっ
て表される。例えば、 position [Y T]′ [quoteright quotedblright] perio
d′space 20, -10; は、ターゲット文脈がマッチする場合に、Y又はTのX
前進を20だけ増加し且つperiodのX前進を10
だけ減少させる。
【0154】以下の例、即ち、 position lam_meem_jeem''' mark sukun''' space ale
f′625 1800, 0,0, -5; においては、最初のサブランは、 lam_meem_jeem mark sukun # First sub-run である。これは<valuerecord*ancho
rlist>からの3個の要素(このランをマーク付け
するために使用された3個の単一の引用符によって表さ
れている)を消費するマーク対合字取付LookupT
ype(マークキーワードに起因して)に対するターゲ
ット文脈として識別される。これらの要素は<anch
or>として解釈される。注意すべきことであるが、
「mark」キーワードはグリフではないのでマーク付
けされていない。
【0155】上の例における2番目のサブランは以下の
ものである。
【0156】Alef これは単一位置決めLookupTypeに対するター
ゲット文脈として識別され、且つ<valuereco
rd*anchorlist>から単一の要素を消費す
る。この要素は<valucerecord>として解
釈される。
【0157】7.特徴ファイルにおけるルックアップ及
び規則の順番付け 7.a.OpenTypeレイアウト(OTL)エンジ
ンのレイアウトアルゴリズム 特徴ファイルを作成するか又は編集するユーザは特徴フ
ァイルにおいて規則を適切に順番付けするためにどのよ
うにしてOpenTypeレイアウトエンジンが置換及
び位置決めを実施するかを理解すべきである。以下のも
のはそのアルゴリズムの要約である。
【0158】最初にGSUBに対して次いでGPOSに
対して以下のことを行う:クライエントのグリフランの
スクリプト及び言語に対する全ての特徴(必要とされる
特徴を含む)を集める。
【0159】全ての関連するルックアップをLooku
pListの順番に集める。
【0160】各ルックアップに対して:該グリフラン内
の各グリフに対して:該Lookup内の各サブテーブ
ルに対して:ターゲットグリフ又はグリフ文脈が見つか
った場合には:グリフ置換又は位置決めを行う。
【0161】該ラン内の次のグリフへ移行(即ち、残り
のサブテーブルをスキップ) 7.b.ルックアップの順番付け OpenTypeフォント内のルックアップは同一の特
徴、スクリプト、言語、ルックアップフラグ、及びルッ
クアップタイプ属性を有する規則の各ラン又は各ルック
アップブロックから作成される。ルックアップは1つ又
はそれ以上のサブテーブルを包含することが可能であ
る。サブテーブルブレークはフォーマット制限に起因し
て挿入されている場合があり、又は、それらはユーザに
よって特徴ファイルにおいて明示的に要求されている場
合がある。いずれの場合においても、サブテーブルは特
徴ファイル内の対応するサブテーブルと同一の順番で作
成される。
【0162】ルックアップは特徴ファイル内の対応する
ルックアップブロック又は規則のランと同一の順番で作
成される。注意すべきことであるが、ルックアップブロ
ックに対する参照はそのブロックから作成されたルック
アップのルックアップリストインデックスに対応してい
る。
【0163】7.c.ルックアップ内の規則の順番付け ルックアップ内の規則の順番付けは文脈置換及び位置決
め規則をチェーン化する場合にのみ重要である。Loo
kupTypeの全てのその他の場合において(合字置
換を含む)、適宜の順番付けは自動的に導き出すことが
可能である。
【0164】8.全代替(aalt)特徴 aalt特徴が存在する場合には、その他の特徴の前に
特定されるべきである。aalt内のグリフのセマンテ
ィクスが等価なグループは以下の如くにしてアルゴリズ
ムにより作成される。
【0165】(a)aalt仕様(以下の例を参照)に
おける、 feature <feature tag>; によって表される特徴のみを考慮し、これらの特徴にお
ける全ての単一及び代替置換(チェーン化文脈規則内に
表れる単一置換を含む)をグループ内に結合させ、その
グループ内の第一グリフはその置換のターゲットグリフ
である。そのグループの後の要素は特徴ファイル内の関
連する規則の順番によって順番付けされる。重複するグ
リフは除去される。
【0166】(b)aalt仕様内の付加的な単一又は
代替置換をアルゴリズムによって作成されたグループへ
付加させる。このことは、例えば、あるグリフが上の
(a)において表された特徴のいずれにおいても参照さ
れなかった場合に、セマンティックグループを微調整す
るために与えられる。
【0167】(c)1つのグループ内に2つのグリフが
存在するに過ぎない場合には、aalt特徴内に単一置
換を作成する。1つのグループ内に2つを超える数のグ
リフが存在する場合には、aalt特徴内に代替置換を
作成し、その第一グリフはターゲットグリフであり且つ
残りのグリフは代替組である。
【0168】例えば、
【数24】
【0169】上の例から作成されたaaltは、以下の
ものが特定された場合と同一である。
【0170】
【数25】
【0171】9.テーブル値の特定又は上書き テーブル値は以下のように対応するテーブルブロック内
において特定される。
【0172】
【数26】
【0173】サポートされる値はBASE、GDEF,
head,hhea,name,OS/2,vheaで
ある。
【0174】9.a.BASEテーブル値 BASEテーブルエントリは以下の如くに特定すること
が可能である。
【0175】
【数27】
【0176】<script record>は
以下の形式である。
【0177】 <script tag> <default baseline tag> <base coord>+ <basecoord>は幾つかのフォーマットをとる
ことが可能である(現在はフォーマットAのみがサポー
トされる)。
【0178】 <number> #フォーマットA <number> <glyph> <number> #フォーマットB <number> <device> #フォーマットC <number>は、マルチ即ち複数個のマスターフォ
ントに対する場合であっても単一の数値である。何故な
らば、ベースラインはマスターに依存して変化すべきで
はないからである。例えば、マルチマスターフォントに
対する「欧文」ベースラインに対する<basecoo
rd>は0である。
【0179】各BaseTagListに対するベース
ラインタグは増加するASCII順番に格納されねばな
らない。特定のスクリプトに対するベースライン値の数
は対応するBaseTagListにおけるベースライ
ンタグの数と同一とすべきである。
【0180】<minmax>は次の形式である。
【0181】
【数28】
【0182】9.b.GDEFテーブル GDEFテーブルエントリは以下の如くにして特定する
ことが可能である。
【0183】
【数29】
【0184】LigatureCaretに対して特定
した<caretvalue>の数は、(合字構成要素
の数)・1でなければならない。
【0185】<caretvalue>は3つのフォー
マットをとることが可能である。
【0186】
【数30】
【0187】9.b.headテーブル headテーブルエントリは以下の如くに特定すること
が可能である。
【0188】
【数31】
【0189】9.c.hheaテーブル hheaテーブルエントリは以下の如くに特定すること
が可能である。
【0190】
【数32】
【0191】9.d.名前テーブル 名前(name)テーブルエントリは以下の如くに特定
することが可能である。
【0192】
【数33】
【0193】名前記録は以下の形式である。
【0194】 Nameid <id> [<string attribute>] <string>; <id>は名前テーブルへ付加すべき名前ストリングの
IDを特定する番号である。この番号は登録したID範
囲0,7−255内のものでなければならない。注意す
べきことであるが、ID1-6(ファミリィ、サブファ
ミリィ、ユニーク、フル、バージョン、フォントネイ
ム)は予約されており且つ上書きすることは不可能であ
り、そうすることは警告メッセージを発生し且つ記録は
無視される。
【0195】オプションの<stringattrib
ute>は、名前テーブルの名前記録内に格納されるべ
きプラットフォーム、プラットフォーム特定、言語ID
を特定する1つ又は3つのスペース区切り付け番号(数
値)である。1つの番号が特定されているに過ぎない場
合には、それはプラットフォームIDを表す。プロット
フォームIDは、夫々、マッキントッシュ又はマイクロ
ソフトウインドウズプラットフォームに対応して1又は
3の何れかとすることが可能である。他のID番号は0
−65535の範囲内のものでなければならないが、そ
うでない場合には有効なものとされない。
【0196】十進数の数値は0でない数字で開始せねば
ならず、八進数の数値は0の数字で開始せねばならず、
且つ十六進数の数値は数値及び十六進数文字a−f又は
A−Fに対するプレフィックス0xで開始せねばならな
い。
【0197】ストリング属性ID数値の幾つか又は全て
が特定されていない場合には、それらの値は以下の如く
にデフォルトが割り当てられる。
【0198】 platform ID 3(ウインドウズ) ウインドウズプラットフォーム選択: platspec ID 1(ユニコード) language ID 0x0409(ウインドウズデフォルト英語) マッキントッシュプラットフォーム選択: platspec ID 0(ローマン) language ID 0(英語) これら全てを一緒にすると以下の有効なnameidフ
ォーマット及び割り当てられるIDが得られる。
【0199】
【数34】
【0200】1つのストリング(string)はAS
CII二重引用符キャラクタ(”)によって取囲まれた
1バイトのASCIIキャラクタから構成されている。
そのストリング内に埋め込まれている新たなラインは格
納されるべきキャラクタシーケンスから除去される。
【0201】0の高バイトを付加することによってスト
リングはウインドウズプラットフォーム用のユニコード
へ変換される。ウインドウズプラットフォーム用の2バ
イトユニコード値は、バックスラッシュキャラクタ
(\)とそれに続く全てがゼロとすることが不可能な正
確に4個の十六進数の数値、例えば\4e2dの特別キ
ャラクタシーケンスを使用して特定することが可能であ
る。ASCIIバックスラッシュキャラクタはシーケン
ス\005c又は\005Cのように表されねばなら
ず、且つASCII二重引用符キャラクタはシーケンス
\0022として表せねばならない。
【0202】マッキントッシュプラットフォーム用のユ
ニコードに対しては対応する変換は存在しないが、12
8-255範囲内のキャラクタコードを、バックスラッ
シュキャラクタ(\)と両方をゼロとすることが不可能
な正確に2つの十六進数の数値からなる特別キャラクタ
シーケンス、例えば\83を使用して特定することが可
能である。ASCIIバックスラッシュキャラクタはシ
ーケンス\5c又は\5Cとして表せねばならず、且つ
ASCII二重引用符キャラクタはシーケンス\22と
して表せねばならない。
【0203】例えば、マッキントッシュ及びウインドウ
ズプラットフォーム用の非ASCIIキャラクタを包含
するデザイナーの名前を付加するためには、以下の如く
に行う。
【0204】
【数35】
【0205】9.e.OS/2テーブル OS/2テーブルエントリは以下の如くに特定すること
が可能である。
【0206】
【数36】
【0207】尚、<panosenumber>はホワ
イトスペースによって離隔されている10(十進数)の
数値である。例えば、以下の如くである。
【0208】
【数37】
【0209】マルチマスターフォントの場合には、ここ
で特定したXHeight及びCapHeightメト
リクス(寸法)もMMFXテーブル内のそれらの名前付
きIDに格納され、そこにある値を上書きする。
【0210】9.f.vheaテーブル値 vheaテーブルエントリは以下の如くに特定すること
が可能である。
【0211】
【数38】
【0212】10.匿名データブロックの特定 特徴ファイルは特徴ファイル処理プロセスのクライエン
トに対して送り戻されるデータの「匿名(anonym
ous)」タグ付きブロックを包含することが可能であ
る。このようなデータのブロックは、典型的に、特徴フ
ァイル処理プロセスが直接にサポートするものでないO
penTypeフォントテーブルを特定するために必要
な情報を包含している。特徴ファイルパーサー即ち構文
解析器はそのデータをパース即ち構文解析することを試
みることはない。このような各ブロックは以下の如くに
特定される。
【0213】
【数39】
【0214】閉じブレース、tag、セミコロンは構文
解析器に対し匿名ブロックの終りを表すために全て同一
のライン上に存在せねばならない。ホワイトスペースは
このライン上のトークンの間に使用することが可能であ
り、且つセミコロンの後にコメントが続くことが可能で
ある。「include」宣言は、「anonymou
s」から開始し閉じるラインの終りにおいて終了するそ
のブロック内において認識されることはなく、従ってブ
ロック全体は同一のファイル内に存在せねばならない。
【0215】クライエントヘ送り戻されるデータは始め
のブレースの後のラインの初めにおいて開始し且つ閉じ
ブレース前の新たなラインで終了する(且つそれを含
む)。上の例においては、タグ「sbit」と共に、以
下のデータがクライエントヘ送り戻される。
【0216】
【数40】
【0217】例B-サンプル特徴ファイル サンプルの特徴ファイルを以下の表に示してある。それ
は合字(ligature)及び巻ひげ文字(swas
h)置換特徴を特定する。スワッシュ(swash)即
ち巻ひげ文字特徴は、ある単語の大文字の文字で始まり
その後小文字の文字が続いている場合には、その大文字
の文字をそのスワッシュ(swash)即ち巻ひげ文字
で置換すべきであることを表す。
【0218】
【数41】
【0219】本発明を特定の実施例について説明した。
その他の実施例も本発明の技術的範囲内に含まれること
は当然である。例えば、本発明のステップは異なる順番
で実施することが可能であり尚且つ所望の結果を得るこ
とが可能である。本発明は、PostScript T
ype 1フォント、OpenTypeフォーマットに
変換された場合にはCIDをキーとしたフォント、及び
OpenTypeフォント(TrueTypeフォント
を含む)ヘ適用することが可能である。本発明は、アッ
プルアドバンストテクノロジィ(AAT)フォントへ適
用することが可能であり、且つそれに対するテーブルを
発生するために使用することが可能である。グラフィカ
ルユーザインターフェース(GUI)アプリケーション
が特徴を定義するためのフォントエディター(即ち、ユ
ーザ)に対するGUIインターフェースを与えることが
可能である。例えば、GUIインターフェースを介し
て、ユーザはフォント内のすべてのグリフを示すパレッ
トからグリフを「合字定義(Define Ligat
ure)」ボタン内へドラッグアンドドロップさせるこ
とが可能である。GUIアプリケーションは中間的なフ
ォーマットとしてそのデータを特徴ファイルフォーマッ
トで保存することが可能であり、次いで、ユーザが所望
する場合には、ユーザがそれをテキストエディターにお
いて微調整することが可能である。調整を行うか又は行
うことなしに次いで、特徴ファイルを上に説明したよう
にして使用することが可能である。このようなアプリケ
ーションはよりGUIに傾倒したフォントエディターに
とって好ましいものであり且つアプリケーションプログ
ラマがOpenTypeテーブルのデータ構造を知るこ
とから解放させる。
【0220】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ制限
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
【図面の簡単な説明】
【図1】 本発明方法を示したフローチャート。
【図2】 本発明方法を示したフローチャート。
【図3】 本発明を実施する場合に使用されるデータ構
造を示したグラフ図。
【図4】 本発明のコンピュータ実施例を示した概略
図。
【図5】 本発明のコンピュータ実施例を示した概略
図。
【符号の説明】
402 コンピュータシステム 404 特徴ファイル 410 特徴ファイル処理プロセス 412 読取モジュール 414 構文解析モジュール 416 内部表現作成モジュール 418 最適化モジュール 420 テーブル作成モジュール 430 特徴ファイルデータ 450 グリフエイリアスデータベース 460 フォントファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェレミー エイ. ホール アメリカ合衆国, カリフォルニア 95120, サン ノゼ, マイクロ プレ イス 1096

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 フォントへ活字特徴を付加する方法にお
    いて、 ハイレベル特徴定義言語で表現された特徴定義を包含す
    る特徴ファイルを用意し、 コンピュータプログラムにおける前記特徴ファイルを読
    取り且つ構文解析して前記特徴定義の内部表現を発生し
    且つ前記内部表現をコンピュータメモリ内に格納し、 前記特徴定義をフォントテーブル又はサブテーブル定義
    へ変換し、 前記テーブル又はサブテーブル定義をフォントファイル
    内へ書き出す、ことを特徴とする方法。
  2. 【請求項2】 請求項1において、前記特徴定義言語が
    置換規則を定義するステートメント形式と位置決め規則
    を定義するステートメント形式とを有していることを特
    徴とする方法。
  3. 【請求項3】 請求項2において、更に、 前記規則をタイプによってグループ化し且つ各グループ
    の規則に対して使用するための定義のテーブルフォーマ
    ットを決定すること、を有しており、前記フォントがO
    penTypeフォントであり、前記フォントテーブル
    又はサブテーブル定義がOpenType定義であり、
    且つ前記フォントファイルがOpenTypeフォント
    ファイルであることを特徴とする方法。
  4. 【請求項4】 請求項1において、前記特徴定義言語が
    宣言論理ステートメントに基づいていることを特徴とす
    る方法。
  5. 【請求項5】 請求項2において、更に、 ユーザフレンドリィグリフ名から最終的グリフ名を派生
    するためにグリフエイリアス用データベースを参照す
    る、ことを特徴とする方法。
  6. 【請求項6】 請求項2において、更に、置換規則ステ
    ートメントから推論的に特定のフォントテーブル又はサ
    ブテーブルを識別し且つ前記置換規則ステートメントを
    前記識別した特定のフォントテーブル又はサブテーブル
    に対する定義へ変換し、 位置決め規則ステートメントから推論的に特定のフォン
    トテーブル又はサブテーブルを識別し且つ前記位置決め
    規則ステートメントを前記識別した特定のフォントテー
    ブル又はサブテーブルに対する定義へ変換する、ことを
    特徴とする方法。
  7. 【請求項7】 請求項2において、前記特徴定義言語が
    宣言論理ステートメントに基づいており、且つ前記特徴
    定義言語がサブテーブルフォーマット選択を表現するた
    めの構成体を有するものではなく、本方法が、更に、 前記特徴定義からユーザの介入なしで共用データ構成体
    を作成し且つ前記特徴定義をOpenTypeフォント
    ファイル内へ書き出す前に冗長性を除去し、且つOpe
    nTypeテーブルに対するサーテーブルフォーマット
    オプションの寸法を計算し且つ対応する特徴定義を書き
    出すための最も小さなオプションを選択する、ことを特
    徴とする方法。
  8. 【請求項8】 フォントへ活字特徴を付加すべく動作可
    能なシステムにおいて、 命令プロセサと、ランダムアクセスメモリと、データフ
    ァイルメモリとを具備するプログラム可能なコンピュー
    タ、 ハイレベル特徴定義言語で表現されている特徴定義を包
    含している特徴ファイルを読取る手段、 前記特徴定義の内部表現を発生するために前記特徴ファ
    イルを構文解析する手段、 前記内部表現を前記ランダムアクセスメモリ内に格納す
    る手段、 前記特徴定義をフォントテーブル又はサブテーブル定義
    へ変換する手段、 前記テーブル又はサブテーブル定義を前記データファイ
    ルメモリ内に格納されているフォントファイル内へ書き
    出す手段、を有していることを特徴とするシステム。
  9. 【請求項9】 フォントへ活字特徴を付加するためのコ
    ンピュータプログラムが格納されているコンピュータに
    よって読取可能な記録媒体において、 前記コンピュータプログラムが、コンピュータをして、 ハイレベル特徴定義言語で表現されている特徴定義を包
    含する特徴ファイルを読取らせ、 前記特徴定義の内部表現を発生するために前記特徴ファ
    イルを構文解析させ、 前記内部表現をメモリ内に格納させ、 前記特徴定義をフォントテーブル又はサブテーブル定義
    へ変換させ、 前記テーブル又はサブテーブル定義をフォントファイル
    内へ書き出させる、上記各命令を有していることを特徴
    とする記録媒体。
  10. 【請求項10】 請求項9において、更に、コンピュー
    タをして、 置換規則を定義するステートメント形式及び位置決め規
    則を定義するステートメント形式を処理させる、命令を
    有していることを特徴とする記録媒体。
  11. 【請求項11】 請求項10において、更に、コンピュ
    ータをして、 前記規則をタイプによってグループ化させ且つ各グルー
    プの規則に対して使用するための適宜のテーブルフォー
    マットを決定させる、上記命令を有していることを特徴
    とする記録媒体。
  12. 【請求項12】 請求項10において、前記特徴定義言
    語が宣言論理ステートメントに基づいていることを特長
    とする記録媒体。
  13. 【請求項13】 請求項10において、更に、コンピュ
    ータをして、 ユーザフレンドリィグリフ名から最終的グリフ名を派生
    させるためにグリフエイリス用データベースを参照させ
    る、上記命令を有していることを特徴とする記録媒体。
JP2000101501A 1999-04-01 2000-04-03 フォント特徴ファイル処理 Pending JP2000338953A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/286,366 US6426751B1 (en) 1999-04-01 1999-04-01 Font feature file processing
US09/286366 1999-04-01

Publications (1)

Publication Number Publication Date
JP2000338953A true JP2000338953A (ja) 2000-12-08

Family

ID=23098291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000101501A Pending JP2000338953A (ja) 1999-04-01 2000-04-03 フォント特徴ファイル処理

Country Status (2)

Country Link
US (1) US6426751B1 (ja)
JP (1) JP2000338953A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012114807A1 (ja) * 2011-02-22 2012-08-30 シャープ株式会社 表示用データ生成装置

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4150452B2 (ja) * 1998-11-12 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション フォントの取得方法、登録方法および印刷方法
JP3382572B2 (ja) * 1999-04-13 2003-03-04 キヤノン株式会社 文字列情報出力装置、文字列情報出力システム、文字列情報出力方法、文字列情報記録装置、文字列情報記録方法および記憶媒体
US7064757B1 (en) * 1999-05-07 2006-06-20 Apple Computer, Inc. Automatic synthesis of font tables for character layout
JP2001043212A (ja) * 1999-07-23 2001-02-16 Internatl Business Mach Corp <Ibm> 電子文書における文字情報の正規化方法
US7305617B2 (en) * 2000-02-12 2007-12-04 Adobe Systems Incorporated Method for aligning text to baseline grids and to CJK character grids
WO2001059576A1 (en) 2000-02-12 2001-08-16 Adobe Systems Incorporated Text grid creation tools
US7071941B2 (en) * 2000-02-12 2006-07-04 Adobe Systems Incorporated Method for calculating CJK emboxes in fonts
US6993709B1 (en) 2000-02-12 2006-01-31 Adobe Systems Incorporated Smart corner move snapping
US6771267B1 (en) * 2000-03-22 2004-08-03 Adobe Systems Incorporated Merging digital fonts
US7197706B1 (en) * 2000-08-30 2007-03-27 Celartem Inc. Method and system for ensuring accurate font matching in documents
US6928611B2 (en) * 2000-09-25 2005-08-09 Adobe Systems Incorporated Setting text composition spacing amount
US7168037B2 (en) * 2000-09-25 2007-01-23 Adobe Systems Incorporated Text composition spacing amount setting device with icon indicators
JP4101491B2 (ja) * 2000-09-25 2008-06-18 アドビ システムズ, インコーポレイテッド 合成フォント編集装置、合成フォント編集プログラム及びそれを記録した記録媒体
US7296227B2 (en) 2001-02-12 2007-11-13 Adobe Systems Incorporated Determining line leading in accordance with traditional Japanese practices
KR100539056B1 (ko) * 2001-07-12 2005-12-27 (주)네오퍼스 폰트의 손실 압축 및 저장 방법
US7167274B2 (en) * 2001-09-28 2007-01-23 Adobe Systems Incorporated Line leading from an arbitrary point
US7039862B2 (en) 2002-05-10 2006-05-02 Adobe Systems Incorporated Text spacing adjustment
US7251365B2 (en) * 2002-07-03 2007-07-31 Vadim Fux Scalable stroke font system and method
US7228501B2 (en) * 2002-11-01 2007-06-05 Microsoft Corporation Method for selecting a font
US20040125107A1 (en) * 2002-12-26 2004-07-01 Mccully Nathaniel M. Coordinating grid tracking and mojikumi spacing of Japanese text
US7123261B2 (en) * 2002-12-26 2006-10-17 Adobe Systems Incorporated Coordinating grid tracking and mojikumi spacing of Japanese text
US7006095B2 (en) * 2003-03-25 2006-02-28 Mitsubishi Electric Research Laboratories, Inc. Method for typesetting a set glyphs represented as a set of two dimensional distance fields
US6906679B2 (en) * 2003-07-21 2005-06-14 Visteon Global Technologies, Inc. Light weight portable phased array antenna
US7548325B2 (en) * 2003-09-30 2009-06-16 Toshiba Corporation Method and system to manage multiple format fonts in an image generating device
US8689101B2 (en) 2004-02-27 2014-04-01 Blackberry Limited Font data processing system and method
US7710422B2 (en) * 2004-07-26 2010-05-04 Microsoft Corporation Font representations
US7594171B2 (en) 2004-10-01 2009-09-22 Adobe Systems Incorporated Rule-based text layout
US20060087663A1 (en) * 2004-10-26 2006-04-27 Engelman Jeffery A Font installer for advanced function presentation
US7492366B2 (en) * 2005-05-13 2009-02-17 Microsoft Corporation Method and system of character placement in opentype fonts
US8020091B2 (en) * 2005-07-15 2011-09-13 Microsoft Corporation Alignment and breaking of mathematical expressions in documents
US7627571B2 (en) * 2006-03-31 2009-12-01 Microsoft Corporation Extraction of anchor explanatory text by mining repeated patterns
US8077974B2 (en) 2006-07-28 2011-12-13 Hewlett-Packard Development Company, L.P. Compact stylus-based input technique for indic scripts
US7786994B2 (en) * 2006-10-26 2010-08-31 Microsoft Corporation Determination of unicode points from glyph elements
US8095575B1 (en) * 2007-01-31 2012-01-10 Google Inc. Word processor data organization
US20090122067A1 (en) * 2007-11-13 2009-05-14 Microsoft Corporation Open fonts including human-readable fonts for compilation
US20090183069A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Font/Script Association
CN101452531B (zh) * 2008-12-01 2010-11-03 宁波新然电子信息科技发展有限公司 一种自由手写拉丁字母识别方法
US9319444B2 (en) 2009-06-22 2016-04-19 Monotype Imaging Inc. Font data streaming
US8769405B2 (en) * 2009-10-16 2014-07-01 Celartem, Inc. Reduced glyph font files
US8615709B2 (en) 2010-04-29 2013-12-24 Monotype Imaging Inc. Initiating font subsets
US8687004B2 (en) * 2010-11-01 2014-04-01 Apple Inc. Font file with graphic images
US8947438B2 (en) 2011-08-01 2015-02-03 Microsoft Corporation Reducing font instructions
US9817615B2 (en) 2012-12-03 2017-11-14 Monotype Imaging Inc. Network based font management for imaging devices
US9569865B2 (en) 2012-12-21 2017-02-14 Monotype Imaging Inc. Supporting color fonts
WO2014110206A2 (en) * 2013-01-09 2014-07-17 Monotype Imaging Inc. Advanced text editor
US20140320527A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Hardware glyph cache
US9317777B2 (en) 2013-10-04 2016-04-19 Monotype Imaging Inc. Analyzing font similarity for presentation
US9547629B2 (en) * 2013-11-29 2017-01-17 Documill Oy Efficient creation of web fonts
US9741142B2 (en) * 2014-05-19 2017-08-22 Adobe Systems Incorporated Method and apparatus for enabling text editing in a scanned document while maintaining fidelity of the appearance of the text
US9691169B2 (en) 2014-05-29 2017-06-27 Monotype Imaging Inc. Compact font hinting
US10062147B1 (en) 2014-09-16 2018-08-28 American Megatrends, Inc. Scaling a fixed font used by a firmware interface
CN106156766B (zh) * 2015-03-25 2020-02-18 阿里巴巴集团控股有限公司 文本行分类器的生成方法及装置
US10115215B2 (en) 2015-04-17 2018-10-30 Monotype Imaging Inc. Pairing fonts for presentation
US11537262B1 (en) 2015-07-21 2022-12-27 Monotype Imaging Inc. Using attributes for font recommendations
US9753915B2 (en) * 2015-08-06 2017-09-05 Disney Enterprises, Inc. Linguistic analysis and correction
US20170249292A1 (en) * 2016-02-29 2017-08-31 Microsoft Technology Licensing, Llc Conditional determination of lookups in glyph processing
US10366142B2 (en) * 2016-05-06 2019-07-30 Adobe Inc. Identifier based glyph search
US10497158B2 (en) * 2017-03-03 2019-12-03 Adobe Inc. Aligning objects with text
US11334750B2 (en) 2017-09-07 2022-05-17 Monotype Imaging Inc. Using attributes for predicting imagery performance
US10909429B2 (en) 2017-09-27 2021-02-02 Monotype Imaging Inc. Using attributes for identifying imagery for selection
WO2019089578A1 (en) 2017-10-30 2019-05-09 Monotype Imaging Inc. Font identification from imagery
US11455762B2 (en) * 2017-12-14 2022-09-27 Adobe Inc. Text border tool and enhanced corner options for background shading
US11080464B2 (en) * 2019-07-18 2021-08-03 Adobe Inc. Correction techniques of overlapping digital glyphs
JP2021063949A (ja) * 2019-10-16 2021-04-22 京セラドキュメントソリューションズ株式会社 情報処理装置及び画像形成装置
US11610046B2 (en) * 2019-10-29 2023-03-21 Adobe Inc. Automatic generation of responsive font effects based on font elements

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0433052A (ja) * 1990-05-24 1992-02-04 Sharp Corp 文書編集装置
JPH04177294A (ja) * 1990-11-12 1992-06-24 Ricoh Co Ltd ベクトルフオント展開装置
JPH04299160A (ja) * 1990-09-28 1992-10-22 Xerox Corp 等価性インジケータを備えたユーザによる規定が可能なフォント置換装置
JPH0687203A (ja) * 1991-06-05 1994-03-29 Adobe Syst Inc 字体を置換して文字を表示する方法および装置
JPH06203138A (ja) * 1989-12-29 1994-07-22 Xerox Corp 画像編集システム
JPH0756909A (ja) * 1993-06-30 1995-03-03 Microsoft Corp 置換コンピュータ字体の供給方法及び装置
JPH0793310A (ja) * 1993-03-25 1995-04-07 Internatl Business Mach Corp <Ibm> データ処理システムにおけるフォント導出の方法
JPH0796594A (ja) * 1993-06-25 1995-04-11 Omron Corp 文字間隔調整装置および方法
JPH07149005A (ja) * 1993-11-29 1995-06-13 Matsushita Electric Ind Co Ltd 文書作成装置
JPH07191659A (ja) * 1993-12-27 1995-07-28 Toshiba Corp データ変換装置
JPH07199898A (ja) * 1994-11-30 1995-08-04 Omron Corp 文字表示装置および文字表示方法
JPH08212370A (ja) * 1995-02-01 1996-08-20 Canon Inc 図形編集装置及び方法
JPH08305803A (ja) * 1995-04-28 1996-11-22 Xerox Corp 文字テンプレートセット学習マシン動作方法
JPH1069477A (ja) * 1996-05-24 1998-03-10 Canon Inc 文字処理方法及び文字処理装置
JPH1081043A (ja) * 1996-08-05 1998-03-31 Hewlett Packard Co <Hp> フォントダウンロード装置および方法
JPH10187135A (ja) * 1996-07-23 1998-07-14 Adobe Syst Inc ポイント寸法可変キャラクタ間隔
JPH11134367A (ja) * 1997-08-06 1999-05-21 Adobe Syst Inc マルチ要素タイプを有する文書のサーチ
JPH11237874A (ja) * 1997-12-05 1999-08-31 Adobe Syst Inc 漢字キャラクタを含むマルチマスタータイプフェースを発生する方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594674A (en) * 1983-02-18 1986-06-10 International Business Machines Corporation Generating and storing electronic fonts
JPS6126192A (ja) * 1984-07-17 1986-02-05 Oki Electric Ind Co Ltd ハングル字母列からのハングル文字認識方法
JPH06188937A (ja) * 1992-12-16 1994-07-08 Canon Inc データ処理装置
US5533180A (en) * 1994-04-07 1996-07-02 Top Computech Co. Ltd. Method of manipulating fonts containing large numbers of characters
US5803629A (en) * 1997-03-14 1998-09-08 Paul H. Neville Method and apparatus for automatic, shape-based character spacing

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06203138A (ja) * 1989-12-29 1994-07-22 Xerox Corp 画像編集システム
JPH0433052A (ja) * 1990-05-24 1992-02-04 Sharp Corp 文書編集装置
JPH04299160A (ja) * 1990-09-28 1992-10-22 Xerox Corp 等価性インジケータを備えたユーザによる規定が可能なフォント置換装置
JPH04177294A (ja) * 1990-11-12 1992-06-24 Ricoh Co Ltd ベクトルフオント展開装置
JPH0687203A (ja) * 1991-06-05 1994-03-29 Adobe Syst Inc 字体を置換して文字を表示する方法および装置
JPH0793310A (ja) * 1993-03-25 1995-04-07 Internatl Business Mach Corp <Ibm> データ処理システムにおけるフォント導出の方法
JPH0796594A (ja) * 1993-06-25 1995-04-11 Omron Corp 文字間隔調整装置および方法
JPH0756909A (ja) * 1993-06-30 1995-03-03 Microsoft Corp 置換コンピュータ字体の供給方法及び装置
JPH07149005A (ja) * 1993-11-29 1995-06-13 Matsushita Electric Ind Co Ltd 文書作成装置
JPH07191659A (ja) * 1993-12-27 1995-07-28 Toshiba Corp データ変換装置
JPH07199898A (ja) * 1994-11-30 1995-08-04 Omron Corp 文字表示装置および文字表示方法
JPH08212370A (ja) * 1995-02-01 1996-08-20 Canon Inc 図形編集装置及び方法
JPH08305803A (ja) * 1995-04-28 1996-11-22 Xerox Corp 文字テンプレートセット学習マシン動作方法
JPH1069477A (ja) * 1996-05-24 1998-03-10 Canon Inc 文字処理方法及び文字処理装置
JPH10187135A (ja) * 1996-07-23 1998-07-14 Adobe Syst Inc ポイント寸法可変キャラクタ間隔
JPH1081043A (ja) * 1996-08-05 1998-03-31 Hewlett Packard Co <Hp> フォントダウンロード装置および方法
JPH11134367A (ja) * 1997-08-06 1999-05-21 Adobe Syst Inc マルチ要素タイプを有する文書のサーチ
JPH11237874A (ja) * 1997-12-05 1999-08-31 Adobe Syst Inc 漢字キャラクタを含むマルチマスタータイプフェースを発生する方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012114807A1 (ja) * 2011-02-22 2012-08-30 シャープ株式会社 表示用データ生成装置

Also Published As

Publication number Publication date
US6426751B1 (en) 2002-07-30

Similar Documents

Publication Publication Date Title
JP2000338953A (ja) フォント特徴ファイル処理
US7697000B2 (en) Method and apparatus for typographic glyph construction including a glyph server
KR100860210B1 (ko) 폰트 선택 방법
US5682158A (en) Code converter with truncation processing
US8407587B2 (en) System of processing a document targeted for one system on another system
US7251667B2 (en) Unicode input method editor
US8261241B2 (en) Converting format strings to regular expressions
KR100859766B1 (ko) 프레젠테이션 데이터 스트림의 복잡한 텍스트를 식별하기위한 시스템 및 방법
JPH08509829A (ja) テキスト入力訳字システム
Allen et al. The unicode standard
JPH0196690A (ja) 処理システム
US7814415B2 (en) Bytecode localization engine and instructions
US7827143B1 (en) Method and apparatus for generating readable, unique identifiers
JP4451908B2 (ja) ユニコード・コンバータ
US8127279B2 (en) Systems and methods for graphical indexer operation on documents with SOSI characters
CN112540958B (zh) 文件处理方法、装置、设备及计算机存储介质
Kew X ETEX live
JPH1021240A (ja) 機械翻訳装置及び機械翻訳方法
Hosken et al. Graphite Description Language
JP5542391B2 (ja) データベース管理システム
Cho et al. Typesetting CJK languages with Ω
JP2002073596A (ja) 外字を含むテキストのコード変換方法
Gulzar Nastaleeq Support in TeX (Omega)
JPH1055358A (ja) 外字管理装置、外字管理方法および外字管理を行うコンピュータプログラムを記憶させたコンピュータ可読媒体
Péter Implementation tricks in the Hungarian Babel module

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101027

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101120

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111108