>サイトトップへ >このカテゴリの一覧へ

日本工業規格

JIS

 X

4163

-1994

 (ISO/IEC

9541-3

: 1994

)

フォント情報交換第 3 部  グリフ形状表現

Information technology

−Font information interchange

Part 3 : Glyph shape representation

日本工業規格としてのまえがき 

この規格は,1994 年第 1 版として発行された,ISO/IEC 9541-3 (Information technology−Font information

interchange

−Part 3 : Glyph shape representation)  を翻訳し,技術的内容及び規格票の様式を変更することな

く作成した日本工業規格である。

なお,この規格で点線の下線を施してある“参考”は,原規格にはない事項である。

まえがき  国際規格 ISO/IEC 9541 は,情報技術合同技術委員会 ISO/IEC JTC 1 が開発し,次の 4 部構成を

とる。対応する日本工業規格(発行予定も含む。

)を(  )内に示す。これらをフォント情報交換規格群又

は単に規格群という。

第 1 部−体系  (JIS X 4161)

第 2 部−交換様式  (JIS X 4162)

第 3 部−グリフ形状表現  (JIS X 4163)

第 4 部−応用固有拡張  (JIS X 4164)

第 1 部は,フォント資源の体系を規定する。つまりフォント資源を参照し交換する際に必要な,フォン

ト記述,フォント配置量,グリフ記述及びグリフ配置量の各属性を規定する。

第 2 部は,フォント情報の交換様式,及び交換に必要なフォント情報の最小部分集合を規定する。

第 3 部は,グリフ形状表現のための体系及び交換様式を規定する。

第 4 部は,応用(例えば数式組版)固有の拡張の際に必要となる体系及び交換様式の拡張を規定する。

0.

序文  事務文書処理の環境でも出版文書処理の環境でも,文書交換用の開放型計算機網を使用するよ

うになると,フォント情報を交換できるようにする機構が必要になってきた。

出版文書処理と事務文書処理との技術の統合が予想されている。それにはフォント資源の体系の規格を

規定し,限定された数のフォント資源交換様式の規格を定めることが,大いに寄与することになろう。

1.

一般

1.1

適用範囲  この規格群は,フォント資源の体系を規定するとともに,情報処理システム間でのフォ

ント交換の様式を規定する。一般的な電子文書交換においてフォント参照を行うために必要な体系及び様

式をも規定する。

この規格は,グリフ形状表現の体系及び交換様式を規定する。


2

X 4163-1994 (ISO/IEC 9541-3 : 1994)

JIS X 4161

及び JIS X 4162 が規定する体系及び交換様式を用いて表現するフォント資源は,ASN.1 様式

又は SGML 様式の解析系を使う種々の文書処理環境で利用できる。この規格で定義するフォント資源情報

の符号化は,ASN.1 様式及び SGML 様式の両方の表現で規定し,どちらの処理環境で用いても一貫性を保

ってフォント資源を生成できるように規定する。

1.2

適合性  この規格に適合するフォント資源は,ISO/IEC 9541 フォント資源に適合する。そのフォン

ト資源は JIS X 4162 の 2.に示す適合基準に合致しなければならない。この規格に適合するグリフ手続きイ

ンタプリタの実装は最低限,次に示す性能をもつものでなければならない。

(1)

少なくとも−8 000 から+8 000 までの範囲の数を,少なくとも小数点以下 12 ビットで表現する。

(2)

オペランドリストは,最低 24 のオブジェクトを保持できる。

1.3

引用規格  次の規格に含まれる規定内容は,この規格の文中での引用によってこの規格の規定とな

る。各規格には,この規格の出版の際に有効であった版を表示してある。どの規格も改訂を受けるから,

この規格に従った合意を形成するに際しては,それぞれの規格の最新版を調べて適用する。現在有効な国

際規格の登録管理は,ISO 及び IEC の構成員が行っている。

ISO/IEC 8824 : 1990 Information technology

−Open Systems Interconnection−Specification of Abstract

Syntax Notation One (ASN.1),

備考  JIS X 5603-1990 が 1987 年度版の ISO 8824 に技術的に対応している。

ISO/IEC 8825 : 1990 Information technology

− Open Systems Interconnection−Specification of Basic

Encoding Rules for Abstract Syntax Notation One (ASN 1),

備考  JIS X 5604-1990 が 1987 年度版の ISO 8825 に技術的に対応している。

ISO 8879 : 1986 Information processing

−Text and office systems−Standard Generalized Markup Language

(SGML),

備考  JIS X 4151-1992 は,ISO 8879 : 1986 及び ISO 8879/Ammendment 1 : 1988 の内容に,技術的追

加及び編集上の変更を加えたものである。

ISO/IEC 9070 :   1991 Information technology

−SGML support facilities−Registration procedures for public

text owner identifiers.

ISO/IEC 9541-1 : 1991 Information technology

−Font information interchange−Part1 : Architecture.

備考  JIS X 4161-1993 が ISO/IEC 9541-1 : 1991 に技術的に対応している。

ISO/IEC 9541-2 : 1991 Information technology

−Font information interchange−Part 2 : Interchange Format.

備考  JIS X 4162-1993 が ISO/IEC 9541-2 : 1991 に技術的に対応している。

ISO/IEC 10036 : 1993 Information technology

−Font information interchange−Procedure for registration of

glyph and glyph collection identifiers.

1.4

表記法  JIS X 4161 の 4.に記述する BNF 表記法を使って,グリフ形状属性の形式的構造を規定する。

1.5

グリフ形状表現の概観  グリフ形状表現の方式はいずれも,個別の属性を用い,独自の体系及び交

換様式をもつ。この規格では,グリフ形状表現の各方式を,2.以降が規定する。この版で規定する形状表

現は,ISO/IEC 9541 T1 グリフ形状表現(この規格の 2.が規定する。

)の方式とする。

備考  3.以降は,他のグリフ形状表現方式を規定する将来の標準化のために確保する。

グリフ形状表現を,輪郭線表現及びビットマップ表現の 2 分類に大別する。

輪郭線表現は,グリフ形状の縁の数学的記述を使ってグリフを記述する。この表現は,変倍,回転及び

傾斜のような変形を可能にするという利点をもち,記憶容量を増やすことなくスタイルをさまざまに変化

させることを可能にする。輪郭線様式は,どのような大きさのラスタ格子についても均整を保たせること


3

X 4163-1994 (ISO/IEC 9541-3 : 1994)

に有効な,ヒントと呼ぶ追加の変倍情報を組み込みやすい。その有用性は,ラスタ装置に限定するもので

はない。ヒントは,表示グリフのさまざまな絶対寸法に対する視覚補正として,非線形の変倍を実行する

のにも役立つ。

ラスタ装置では,輪郭線フォントは,変倍要求に応じた調整の後,最終的な可視化及び表示のためのビ

ットマップ表現への変換を受ける。しかし,輪郭線グリフ形状記述の表示は,ラスタ装置だけで行われる

わけではない。輪郭線グリフ形状記述の表示は,プロッタ,標識カッタ,彫刻マシンなどのベクトル装置,

又はスポットサイズ可変のラスタ装置及びグラビア装置でも行われる。さまざまな表示装置の適性に応じ

て,形状表現の方式は異なる。

ビットマップ表現は,ラスタ装置で印刷するために必要な画素パターンを記述する。ビットマップグリ

フ表現は,水準の高い組版品質を保って変倍又は変形を任意に行う能力が低い。グリフ形状のビットマッ

プは,ドットが列又は行に並んだものとして表現できるだけでなく,特にもっと大きなサイズ用には,種々

のより圧縮した表現が可能な方式を用いることもできる。

1.6

GSHAPES

  この規格に適合し,グリフ形状を含むフォント資源は,GSHAPES 属性をもたなければ

ならない。GSHAPES 属性は,フォント資源に関する形状情報の集合を定義する GSHAPE 属性リストの属

性リストとする。

GSHAPES

属性リスト::=GSHAPES 属性名,GSHAPES 属性値の属性リスト

GSHAPES

属性名::=構造化名  −−ISO/IEC 9541-3//GSHAPES

GSHAPES

属性値の属性リスト::=(T1SHAPES 属性|属性リスト)*

どのようなグリフ形状表現もこの方法で定義可能となる。ISO/IEC 9541 T1 グリフ形状表現の体系は,

2.

が定義する。

1.7

フォント交換様式への拡張  JIS フォント情報は,JIS X 4162 に規定する ASN.1 様式又は SGML 様

式のどちらかを使って交換しなければならない。これらの交換様式は,グリフ形状情報の交換様式を定義

する“マーカ”を含む。1.7 でこれらの様式を定義する。

1.7.1

ASN.1

ISO 9541

−GSHAPES { 1 0 9541 3 0 } DEFINITIONS : : =BEGIN

IMPORTS T1

−Shape−Property−List FROM ISO 9541−GST1 {1 0 9541 3 0 0}

Glyph

−Shapes : : =SET{

t1

−shape−property−list

[0] EXTERNAL T1

−Shape−Property−List OPTIONAL,

−−この規格の 2.を参照のこと。

non-iso-properties

[99] IMPLICIT Property

−List OPTIONAL}

1.7.2

SGML

<!-- (c) International Organization for Standardization 1994

Permission to copy in any form is granted for use with conforming

SGML systems and applications as defined in ISO 8879 : 1986;

provided this notice is included in all copies. -->

<!-- Public document type definition. Typical invocation:

<!DOCTYPE gshapes PUBLIC

“ISO 9541-3 : 1994//DTD Glyph Shapes//EN” >  -->

<!ELEMENT gshapes - o (t1shapes? & niprop*)

--GLYPHSHAPES -->

<!-- Type 1 shape information. Typical invocation:

<!DOCTYPE t1shapes PUBLIC

ISO 9541-3 : 1994/DTD Type 1 Glyph Shapes//EN -->


4

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.

T1

グリフ形状表現

2.1

適用範囲  標準グリフ形状表現の一つである ISO/IEC 9541 T1 グリフ形状表現の体系及び交換様式

を,2.が規定する。この形状表現の方式は,低解像度,中解像度及び高解像度のラスタ装置上の表示に適

するが,それらに限定するものではない。

2.2

定義  この規格の 2.で用いる用語の定義は,次のとおりとする。

2.2.1

暗号文  (ciphertext)    暗号化した情報。

2.2.2

現在点  (current point)    グリフ記述言語のパス構成演算子が参照した最後の点。この点は,最後に

描いた直線若しくは曲線の終点,又は rmoveto 演算子若しくは setcurrentpoint 演算子が最後に置いた点のい

ずれかとなる。

2.2.3

暗号キー  (encryption key)    グリフ手続きの暗号化又は非暗号化に必要な整数。

2.2.4

フォントプログラム  (font program)   グリフ手続き及びグリフ記述データの構造化集合を組み込

んだ計算機プログラム。

2.2.5

仮想ステム  (ghost stem)   グリフ範囲の Max-y 及び Min-y だけに適用する仮想の水平ステム。も

し正確な垂直そろえが必要であれば,hstem ヒント演算子をこの仮想ステムに対して指定しなければなら

ない。

2.2.6

グリフ手続き  (glyph procedure)   標準グリフ形状記述演算子を使って書き,交換様式で表現した

計算機プログラム。

2.2.7

グリフ手続きインタプリタ  (glyph procedure interpreter)    グリフの輪郭線表現と,走査変換に必要

な関連データ構造とを構成するための,グリフ手続きを解釈できる計算機処理。

2.2.8

ヒント  (hint)    ラスタ装置上での表示のためのラスタ化に際して,グリフの均整及び特徴を保存

するのに有効な,グリフの幾何形状に付加する手続き指定情報又は宣言的な指定情報。

2.2.9

オーバシュート (overshoot)   平たん(坦)な先端位置をわずかに越えて伸びた,丸い又はとが(尖)

ったグリフ先端の部分。これを用いて水平の表記方向で視覚的に正確なグリフの垂直並びを表現する。

2.2.10

パス  (path)    一つ以上のパス構成演算子が構成する,サブパス及び領域の分離可能な集合。一つ

のグリフの中のすべてのサブパスの集合が一つのパスとなる。

2.2.11

平文  (plaintext)    暗号化していない情報。

2.2.12

ラスタ化  (rasterization)    塗りつぶさなければならないグリフ範囲の決定と,それらの範囲を表現

するためのビットマップの生成とからなる 2 段階の処理。

2.2.13

領域  (region)    幾何的に定められた範囲。

2.2.14

区間  (segment)    単一の描画命令で生成した曲線又は直線。すなわち,グリフ形状を定義するパス

の上の連続する点の間の曲線又は直線。

2.2.15

ステム幅整合  (snap)    装置独立の輪郭線表現における公称幅の異なるグリフステムの集合を,ビ

ットマップ表現へ変換するに際して,強制的に同じ幅にするための機構。

2.2.16

サブパス (subpath)   一つ以上のパス構成演算子が構成する,連結した直線区間又は曲線区間の列。

2.2.17

組上り濃度  (typographic color)    表示するフォントの相対的な太さ。フォントの中の主要ステムの

相対的幅に基づく。表示面の範囲に対する,表示グリフ形状の面積の相対量でもある。


5

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.3

T1

グリフ形状表現体系の概要  T1 グリフ形状表現は,グリフの形状を記述する図形描画演算子を使

って輪郭線フォントを表現する。この方式は,グリフを種々の方法で変倍,回転及び変形させることがで

き,表示用のビットマップを生成するためのラスタ化を実行できる利点をもつ。グリフ形状を定義する属

性は,手続き的構成子であっても,フォントレベル又はグリフレベルで規定する追加の宣言的データであ

ってもよい。

グリフ手続きは,選択可能の宣言的ヒントを含んでもよい。ヒントは,グリフを変倍し,ラスタ装置の

画素格子に対してグリフの均整及び特徴を保つために最適化する際に,グリフ手続きインタプリタを支援

するフォントプログラムの情報からなる。しかし,ヒントの有用性は,この応用だけに限定されるもので

はない。フォントレベルヒントは,フォント全体に対して定義し,そろえ及びステム幅を制御する。グリ

フレベルヒントは,定義されているグリフだけに適用され,主に垂直ステム及び水平ステムをラスタ化す

るのに役立つ。

グリフ形状は,手続き的構成子及び属性と呼ぶ宣言的な付加データで定義する。これらの付加データの

働きは,次のとおりとする。

(1)

一般属性 T1GENERAL は,フォントプログラム及び使用するグリフ形状表現の種別を識別する(2.6.1

参照)

(2)

組上り濃度属性 T1COLOR は,画線の幅を均一にすると共に,変倍して表示したグリフの外見上のウ

ェイトを制御する(2.6.2 参照)

(3)

グリフ手続き属性 T1GLYPH は,主としてグリフ手続きが使うパラメタ及びサブルーチンを提供する

2.6.3 参照)

参考  この規格に適合するグリフ形状表現は,計算機のプログラム又は手続きを構成し,知的財産権

の保護に関する法律が保護する対象となることもある。

T1

グリフ形状の属性を,2.が定義する。

−  2.4 は,T1 グリフ形状概念を説明する。

−  2.5 は,T1 グリフ形状インタプリタモデルを説明する。

−  2.6 は,T1 グリフ形状属性を定義する。

−  2.7 は,グリフレベル手続きの動作内容を定義する。

−  2.8 は,サブルーチン手続きの使用を定義する。

−  2.9 は,交換様式を定義する。

2.4

T1

グリフ形状概念  T1 グリフ形状表現の方式に関連した概念を,2.4.12.4.15 に示す。

2.4.1

グリフ座標系  T1 グリフ形状表現の方式は,JIS X 4161 の 8.2 のグリフ座標系を使う。

備考  この規格の 2.に示す例はすべて,RELUNITS 値を 1000 に設定している。

2.4.2

グリフ手続き言語  グリフ形状及びヒントパラメタを指定するためにグリフ手続き言語を使う。こ

の言語は,一つのパスの指定を許す。そのパスは複数の分離したサブパスから成ってもよい。全体のパス

を構成した後に,グリフ手続きインタプリタは,PAINTTYPE 属性の値に応じて,グリフを一つの実体と

して塗りつぶすか,又は線を引く。

2.4.3

グリフ手続きインタプリタ  グリフ手続きインタプリタとは,グリフ手続き言語で書いたグリフ手

続きを解釈する仮想機械をいう(2.7.1 参照)


6

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.4.4

並び位置  並び位置とは,方向でグリフの先端が並ぶ位置を表す 値とする。並び位置は,

LEFT-TO-RIGHT

又は RIGHT-TO-LEFT の WRMODENAME 属性の値をもつフォント資源に関して,並び域

を定義するのに必ず対で用いる。BASE-ALIGN の ALIGNNAME 属性の値をもつフォント資源は,軸上に

ベースラインをもつ。並び位置は,フォントレベルの BLUEVALUES 属性及び OTHERBLUES 属性で指定

し,又は基準位置及びオーバシュート位置からなる対で指定する(2.4.5 及び 2.4.6 参照)

東アジアの表意グリフなどの TOP-TO-BOTTOM の WRMODENAME 属性の値をもつフォント資源,又

は CENTRE-ALIGN の ALIGNNAME 属性の値をもつフォント資源は,一般的に中心だけに並び位置をもち

(フォント中にその並び位置の指定は必要ない。

,グリフ形状の先端に他の並び位置をもたない。

2.4.5

基準位置  基準位置は,主に平らな形のグリフ先端がそろう,並び位置とする。平らな形状が何で

あるかは,書体デザイナの美的判断による。グリフ先端がほとんど平らであれば,基準位置にそろえるの

が よ い 。 基 準 位 置 の 概 念 は , CENTRE-ALIGN の ALIGNNAME 属 性 の 値 を も つ フ ォ ン ト , 又 は

TOP-TO-BOTTOM

の WRMODENAME 属性の値を持つフォントには一般に適用しない。

2.4.6

オーバシュート位置  オーバシュート位置は,基準位置に関連し,それを少し越えた並び位置で,

そこに平らでないグリフ先端をそろえることができる(

図 参照)。オーバシュートは,錯視を考慮し,さ

まざまな形態のグリフが垂直方向で精密にそろっているように見せることを目的とする。オーバシュート

位置は,ALIGNNAME 属性の値が CENTRE-ALIGN のフォント,又は WRMODENAME 属性の値が

TOP-TO-BOTTOM

のフォントには一般に適用しない。

備考  どのグリフがオーバシュートを必要としているか,グリフ先端が理想の輪郭線表現においてど

のくらい基準位置を越しているかは,書体デザイナ又は開発者が決定する。輪郭線調整及び塗

りつぶし処理(ラスタ化処理)は,この規格の範囲ではないが(

図 参照),結果として生じる

ビットマップ表現が,必要なグリフサイズ及び表示装置の特徴にあわせてそろって見えるよう

に,これらの飛び出し部分を,制御してもよい。

2.4.7

オーバシュート抑制  オーバシュート抑制とは,小さいサイズにラスタ化する変倍処理がオーバー

シュートをさせない機構を言う。この機構によって,基準位置を越えた 1 画素分のオーバシュートを防ぐ

ことができる。

2.4.8

並び域  並び域は,二つの並び位置の間の範囲とする。基準位置の始めからグリフの最上部の最大

オーバシュート位置の間(上部域)

,最大オーバシュート位置からグリフの底部の基準位置の間(底部域)

の範囲などとする。このような域は,複数あってよい。一つの底部域と二つの上部域の例を,

図 に示す。

並び域の概念は,ALIGNNAME 属性の値が CENTRE-ALIGN であるフォント,又は WRMODENAME 属性

の値が TOP-TO-BOTTOM のフォントには適用しない。

図 1  上部域及び底部域における基準位置及びオーバシュート位置が構成する三つの並び域


7

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.4.9

ヒント  ヒント情報には,フォントレベル及びグリフレベルの二つの種別がある。フォントレベル

ヒントは属性として宣言し,フォント中のすべてのグリフに適用するパラメタをもつ。フォントレベルヒ

ントは,フォント資源中の全グリフの垂直方向の並び及びステム幅を制御する並び域を定義する(2.6.2.8.1

2.6.2.8.5 参照)

。グリフレベルヒントは,グリフ手続き演算子を用いて,グリフ手続き中で宣言し,グリ

フレベルヒントの定義があるグリフ手続きについてだけ有効とする。

グリフ手続きの中で,水平及び垂直のステムのラスタ化を制御するために,グリフレベルの宣言的ヒン

トを付加してよい。ステムは,直線又は曲線のいずれかである。ヒント演算子は,グリフ手続きインタプ

リタに対してヒント域(2.4.10 参照)を示す。ヒント域は,最初のオペランドが示す座標から,2 番目のオ

ペランドが示す相対的位置にまで広がる。hstem ヒントは,水平のステムの垂直方向の画素数を制御する

のに使う。vstem ヒントは,垂直のステムの水平方向の画素数を制御するのに使う。ヒント演算子のオペ

ランドは,ステムの区間の端点であって,

しかもそのステムの極点の正確な座標を表さなければならない。

グリフ手続きインタプリタは,種々の寸法と解像度に変倍する際に,デザインの特徴及び均整を保つた

めに,グリフ輪郭線を調整できる。hstem 及び vstem ヒントを漢字グリフに適用した例を,

図 に示す。

図 の詳細は,パス区間端点及び hstem ヒント域の関連境界を示す。

図 2  hstem 及び vstem 

図 3 は,大文字 D グリフの適切なヒント域を,hstem 及び vstem オペランド値の関連とともに示す。

図 3  グリフレベルヒント域に関連するステム,ヒント域及びヒント演算子オペランド


8

X 4163-1994 (ISO/IEC 9541-3 : 1994)

同じ方向のヒント域が,

図 のようにグリフ中で座標が重複する場合(例えば,二つの vstem ヒント演

算子が二つのヒント域を定義する場合)

,グリフ描画手続きにおいて,適切な場所で最初に宣言されたヒン

ト域を新しい集合に置き換えることによって,グリフの均整及び特徴は最もよく保てる。ヒント代替の処

理は,2.8.2 に定義する。

図 4  重複ヒント域

ラテンアルファベットのフォントなどの複数の並び位置にそろえる必要のあるフォントは,漢字のよう

な中心並びの字形の体系とは異なり,並び域においてステムヒント定義をもつ。これは,ある種のグリフ

では通常起こりうる。たとえば三つの水平のステムに三つの hstem ヒントを宣言した,大文字 E を

図 

示す。ラテンアルファベットのフォントでは,最上部ステムの hstem ヒントは,大文字高まで広げ,最下

部ステムの hstem ヒントはベースラインまで広げる。

図 5  ヒント域及び並び位置

しかし,サンセリフの大文字 I の場合は,hstem ヒントのための水平のステムは存在しない。このグリフ

に大文字高及びベースライン並びを適用するためには,大文字 I は,これらの位置で仮想ステム(定義参

照)と呼ぶ存在しない水平のステムを定義する hstem ヒントをもたなければならない。これらの hstem ヒ

ントをグリフに含まない場合の結果は不定である。

備考  実装ベースのグリフ手続きインタプリタ間の互換性を得るために,これらの仮想ステムの幅に

許す値は限定する(

附属書 を参照)。

グリフがフォントレベル並び位置にそろうならば,その hstem ヒントは,その最上部を上部域に,その

最下部を底部域にもつ必要はない。大文字 I の例では,ベースラインから大文字高へ伸びるただ一つの

hstem

ヒントを用いるということはありえない。一つの hstem が大文字高に,もう一つの hstem がベースラ


9

X 4163-1994 (ISO/IEC 9541-3 : 1994)

インになければならない。

備考  ヒント属性には推奨値を示す属性がある。これらの値は必ずではないが,推奨値に従わない場

合,現在のグリフ手続きインタプリタは予期しない結果又は望ましくない結果を起こす可能性

がある。

2.4.10

ヒント域  ヒント域は,グリフレベルのヒント演算子に関する一対のオペランドが定義した位置の

間の範囲(それらの位置自体を含む)とする。ヒント域の外側の境界は,ステムのようなグリフ形状の極

点であるパス区間端点の正確な位置を指定する。

2.4.11

パス方向  反時計回りのサブパスの定義は,グリフ手続きインタプリタに,その領域を塗りつぶす

ことを示す。時計回りのサブパスの定義は,その領域が,一つの塗りつぶされた領域の中に含まれ,塗り

つぶさずに残されることを示す。

2.4.12

参照点  参照点は,グリフ手続きの先頭で,rpe 演算子又は xrpe 演算子のオペランドで指定する。

T1

フォントの中の各々のグリフ手続きは,参照点を指定しなければならない。後続のパス構成演算子又は

ヒント演算子の中で指示する全座標は,この点に相対的なものとして解釈する。

2.4.13

フレクス機構  フレクス機構は,はい(盃)状セリフなどの浅い曲線に用いることを意図した,三

つの補助サブルーチンの集合から成る。これらの形状を小さいサイズでラスタ化するときは,直線に置き

換えるためにフレクス機構を使ってよい。

2.8 を参照)

2.4.14

ヒント代替  ヒント代替機構は,現在のグリフでヒント域の位置を変更するために,補助サブルー

チンを使う。単一のグリフの中で同じ方向のステムが重複座標をもっているとき,ヒント代替機構を使う

2.8 を参照)

2.4.15

ベジェ曲線  ベジェ曲線は,3 次のパラメタをもつ一対の等式から算出する。

x (t)

a

x

t

3

b

x

t

2

c

x

t

X

0

y (t)

a

y

t

3

b

y

t

2

c

y

t

Y

0

点  (X

0

Y

0

)

は開始点とし,点  (X

3

Y

3

)

は終了点とする。これらと関連して,制御点  (X

1

Y

1

)

及び  (X

2

Y

2

)

がある。ベジェ曲線は,点  (X

0

Y

0

)

から点  (X

1

Y

1

)

への線区間と点  (X

0

Y

0

)

で接し,点  (X

2

Y

2

)

ら点  (X

3

Y

3

)

への線区間と点  (X

3

Y

3

)

で接する。この曲線は,

図 に示すとおり,制御点  (X

1

Y

1

)

及び

制御点  (X

2

Y

2

)

をもった,点  (X

0

Y

0

)

から点  (X

3

Y

3

)

へのベジェ曲線となる。

図 6  制御点をもつベジェ曲線


10

X 4163-1994 (ISO/IEC 9541-3 : 1994)

この曲線に対応するベジェ制御点は次のとおりとなる。

X

1

X

0

3

x

c

Y

1

Y

0

3

y

c

X

2

X

1

3

x

x

b

c

Y

2

Y

1

3

y

y

b

c

X

3

X

0

c

x

b

x

a

x

Y

3

Y

0

c

y

b

y

a

y

2.5

グリフ手続きインタプリタモデル  図 はグリフ像の表示準備処理の一部として,グリフ手続きイ

ンタプリタのモデルを示す。グリフ手続きインタプリタは,グリフ手続きを解釈し,理想グリフ輪郭線及

び状態変数集合を構成する。この処理部分の意味を,2.5 が規定する。輪郭線修正アルゴリズム及び塗りつ

ぶしアルゴリズムは,幾何的輪郭線,状態変数及びフォントレベルヒントを入力として,表示に適したグ

リフ像を構成する。この処理部分は,実装依存とし,この規格では規定しない。

図 7  T1 グリフ手続きインタプリタのモデル

2.6

T1SHAPES

  属性 T1SHAPES は,T1 形状情報に関するすべての属性を指定する形状属性の属性リス

トとする。

この属性リストは,T1GENERAL 属性,T1COLOR 属性及び T1GLYPH 属性から成る。

T1SHAPES

属性::=T1SHAPHS 属性名,T1SHAPES 属性値の属性リスト

T1SHAPES

属性名::=構造化名  --ISO/IEC 9541-3//T1SHAPES

T1SHAPES

属性値の属性リスト::=

(T1GENERAL 属性リスト,

 T1COLOR

属性リスト,

 T1GLYPH

属性リスト)


11

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.6.1

T1GENERAL

  属性 T1GENERAL は,フォント全体に関する属性リストとする。

T1GENERAL

属性::=T1GENERAL 属性名,T1GENERAL 属性値の属性リスト

T1GHNERAL

属性名::=構造化名  --ISO/IEC 9541-3//T1GENERAL

T1GENERAL

属性値の属性リスト::=

(PASSWORD 属性|

 PAINTTYPE

属性|

 UNIQUEID

属性)*

2.6.1.1

PASSWORD

  属性 PASSWORD は選択可能とする。そのデータ型を整数とし,既存のグリフイ

ンタプリタがこの規格のフォントを利用しやすくするための便宜として PASSWORD 属性を与える。

参考  属性 PASSWORD は,実装ベースとの互換性にとってだけ重要である。互換性を得るために必

要なこの属性の値は,

附属書 を参照のこと。

PASSWORD

属性::=PASSWORD 属性名,PASSWORD 属性値

PASSWORD

属性名::=構造化名  --ISO/IEC 9541-3//PASSWORD

PASSWORD

属性値::=整数

2.6.1.2

PAINTTYPE

  属性 PAINTTYPE は,必ずとする。そのデータ型は整数とし,フォントプログラ

ムの中でグリフ輪郭線をどのようにラスタ化するかを指定する。PAINTTYPE 属性の値は,次のいずれか

とする。

0

:塗りつぶし

2

:画線(かくせん)化

参考  属性 PAINTTYPE は,グリフの表示に際しての見え方を規定するのではない。それは走査変換

処理でパスを塗りつぶすか,画線化するかを指定する。JIS X 4161-1993 の STRUCTURE 属性

は,グリフの最終的な見え方がソリッドか輪郭線かを指定するが,この PAINTTYPE 属性はそ

れとは異なる。

PAINTTYPE

属性::=PAINTTYPE 属性名,PAINTTYPE 属性値

PAINTTYPE

属性名::=構造化名  --ISO/IEC 9541-3//PAINTTYPE

PAINTTYPE

属性値::=整数 0|2

2.6.1.3

UNIQUEID

  属性 UNIQUEID は,選択可能とする。そのデータ型は構造化名とし,グリフ輪郭

線から生成するビットマップを再利用目的に記憶する際に,フォントを識別するのに用いる。

参考  属性 UNIQUEID は,フォントプログラムが生成し,再利用目的に記憶するビットマップを一意

に識別することを主要目的とする。フォントの名前が一意であることの保証がないので,この

UNIQUEID

属性を必要とする。UNIQUEID 属性は,処理中の文書のためだけでなく,後続のす

べての印刷ジョブのために,ビットマップをプリンタの記憶装置又はハードディスクのいずれ

にも再利用目的の記憶をすることを可能にする。

UNIQUEID

属性::=UNIQUEID 属性名,UNIQUEID 属性値

UNIQUEID

属性名::=構造化名  --ISO/IEC 9541-3//UNIQUEID

UNIQUEID

属性値::=構造化名

2.6.2

T1COLOR

  属性 T1COLOR は,フォントレベルの並び域を定義し,オーバシュート(はみ出し)

を制御する属性,及びラスタ化したグリフのステム幅を制御する属性の二つの種別がある。並び域及びオ

ー バ シ ュ ー ト の 制 御 属 性 は , ALIGNNAME 属 性 の 値 が CENTRE-ALIGN で あ る フ ォ ン ト , 又 は

WRMODENAME

属性の値が TOP-TO-BOTTOM であるフォントには適用しない。

T1COLOR

属性の中の BLUEVALUES 属性は必すとする。BLUEVALUES 属性は,そのリストが空であっ


12

X 4163-1994 (ISO/IEC 9541-3 : 1994)

ても指定しなければならない。T1COLOR 属性は,値を持たない選択可能な属性を含んではならない。ス

テム制御に属する属性は,どのようなフォント資源にも適用できる。

T1COLOR

属性::=T1COLOR 属性名,T1COLOR 属性値の属性リスト

T1COLOR

属性名::=構造化名  --ISO/IEC 9541-3//T1COLOR

T1COLOR

属性値の属性リスト::=

(BLUEVALUES 属性  |  OTHERBLUES 属性|

FAMILYBLUES

属性  |  FAMILYOTHERBLUES 属性|

BLUESCALE

属性  |  BLUESHIFT 属性|

BLUEFUZZ

属性  |  STEMWIDTHPROPS 属性)*

参考  組上がり濃度属性は,歴史的な理由及び互換性の理由から,“BLUEVALUES”  と呼ぶ。もとも

と Blue という用語は,業界で書体をデジタル化する際の色分け方法の一部として用いてきた。

この用語は,これらの属性をグループ化するのにも,フォントの組上がり濃度制御の概念にこ

の属性を結び付けることにも有効である。

2.6.2.1

BLUEVALUES

  属性 BLUEVALUES は,必すとする。その属性値は,一つの底部域(ベースラ

イン)及び 6 個までの上部域に関する並び位置を指定する整数対の順序付き属性リストとする。各整数対

の各整数は,グリフ座標系における垂直位置を表す。WRMODENAME 属性の値が LEFT-TO-RIGHT であ

るフォント資源と RIGHT-TO-LEFT であるフォント資源とに関して,その値の符号は,正の 方向を正と

する。WRMODENAME 属性に他の値をもつフォント資源については,この属性値の符号を定義しない。

この属性値は,次の規則に従わなければならない。

(1)

各対の最初の整数は,その対の 2 番目の値以下とする。

(2)

最初の対は,ベースラインオーバシュート位置及びベースライン位置とする。

(3)

各対は,互いにグリフ座標系の 3 単位以上離れ,OTHERBLUES 属性リストの対からも離れていなけ

ればならない。この最小距離は,選択可能の BLUEFUZZ 属性によって変更可能とする。

(4)

  1

対の値の最大差は,BLUESCALE 属性の記述による。

備考  欧文のグリフの上部域並び位置の例を,次に示す。

− LCHEIGHT 位置及び LCHEIGHT オーバシュート位置

−  アセンダ位置及びアセンダオーバシュート位置

− CAPHEIGHT 位置及び CAPHEIGHT オーバシュート位置

−  数字位置及び数字オーバシュート位置

−  上付き基準位置及び上付きオーバシュート位置

−  序数基準位置及び序数オーバシュート位置

並び域が不要であるフォントについては,リストの値を空にする。BLUEVALUES 属性は,たとえその

リストが空でも,宣言しなければならない。

BLUEVALUES

属性::=BLUEVALUES 属性名,BLUEVALUES 属性の順序付き値リスト

BLUEVALUES

属性名::=構造化名  --ISO/IEC 9541-3//BLUEVALUES

BLUEVALUES

属性の順序付き値リスト::=(整数,整数)*  −−  最大 7 対


13

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.6.2.2

OTHERBLUES

  属性 OTHERBLUES は,選択可能とする。その属性値は,5 個までの底部域に

関する並び位置を規定する整数対の値リストとする。各整数対の各整数は,グリフ座標系における垂直位

置を表す。これらの底部域が,BLUEVALUES 属性に用いるベースライン域と重なってはならない。

WRMODENAME

属 性 の 値が LEFT-TO-RIGHT である フォ ント 資 源と WRMODENAME 属 性の 値が

RIGHT-TO-LEFT

で あ る フ ォ ン ト 資 源 と に 関 し て , そ の 値 の 符 号 は , 正 の 方 向 を 正 と す る 。

WRMODENAME

属性が他の値をもつフォント資源については,この属性値の符号を定義しない。この属

性値は,次の規則に従わなくてはならない。

(1)

各対の最初の整数は,その対の 2 番目の値以下とする。

(2)

各対は,互いにグリフ座標系の 3 単位以上離れ,BLUEVALUES リストの対からも離れていなければ

ならない。この最小距離は,選択可能の BLUEFUZZ 属性によって変更可能とする。

(3)

  1

対の値の最大差は,BLUESCALE 属性の記述による。

備考  欧文グリフの底部域並び位置の例を,次に示す。

−  ディセンダオーバシュート位置及びディセンダ位置

−  上付きベースラインオーバシュート位置及び上付きベースライン位置

−  序数ベースラインオーバシュート位置及び序数ベースライン位置

OTHERBLUES

属性::=OTHERBLUES 属性名,OTHERBLUES 属性の順序付き値リスト

OTHERBLUES

属性名::=構造化名  --ISO/IEC 9541-3//OTHERBLUES

OTHERBLUES

属性の順序付き値リスト::=(整数,整数)*  −−  最大 5 対

2.6.2.3

FAMILYBLUES

  属性 FAMILYBLUES は,選択可能とする。その属性値は,書体(タイプフェ

ース)ファミリの中の標準的な書体の並び位置と整合する並び位置を指定する整数対のリストとする。各

整数対の各整数は,グリフ座標系における垂直位置を表す。このリストは,一つの底部域(ベースライン)

及び 6 個までの上部域に対する参照値を指定する。このリストの内容は,2.6.2.1 のリスト中に示す規則に

適合しなければならない。

WRMODENAME

属性の値が LEFT-TO-RIGHT であるフォント資源と RIGHT-TO-LEFT であるフォント資

源とに関して,その値の符号は,正の 方向を正とする。WRMODENAME 属性が他の値をもつフォント

資源については,この属性値の符号は定義しない。

ファミリ並びの整合が適正に動作するために,FAMILYBLUES 属性に関して次の事項を確認しなくては

ならない。

(1)

各書体ファミリの 1 書体をそのファミリの標準として選択すること。

(2)

ファミリの全書体に,整合した並びをもたせる場合は,標準的な書体の BLUEVALUES 属性の値を標

準的な書体から複製して,FAMILYBLUES 属性の値とする。

あるフォントの並び位置と,そのフォントに対応するファミリの標準的な並び位置(FAMILYBLUES 属

性が指定する)との差が 1 画素より小さいとき,そのフォントの通常の並び位置の代わりに,そのファミ

リの標準的な並び位置を用いなくてはならない。

参考 FAMILYBLUES 属性は,同一フォントファミリのさまざまなスタイルから,ラスタ化したグリ

フ高を整合させる手段を与える。同一フォントファミリのさまざまなスタイルがテキスト中に

混在するとき,それらの並び位置を整合させて,小さいサイズで一貫性を保つことが望ましい

場合がある。もしこの情報がないと,フォントプログラムがもつ並びヒントだけを考慮するこ

とになる。ファミリ並び位置は,それぞれのフォントの小文字高,小文字高オーバシュートな

どの並び位置に対応しなければならない。


14

X 4163-1994 (ISO/IEC 9541-3 : 1994)

FAMILYBLUES

属性::=FAMILYBLUES 属性名,FAMILYBLUES 属性の順序付き値リスト

FAMILYBLUES

属性名::=構造化名  --ISO/IEC 9541-3//FAMILYBLUES

FAMILYBLUES

属性の順序付き値リスト::=(整数,整数)*  −−  最大 7 対

2.6.2.4

FAMILYOTHERBLUES

  属性 FAMILYOTHERBLUES は,選択可能とする。その属性値は,書

体ファミリの中の標準的な書体の並び位置と整合しなければならない並び位置を指定する整数対のリスト

とする。各整数対の各整数は,グリフ座標系における垂直位置を表す。このリストは,5 個までの底部域

に対する参照値を指定する。このリストの内容は,2.6.2.2 のリスト中に示す規則に適合しなければならな

い。

WRMODENAME

属性の値が LEFT-TO-RIGHT であるフォント資源と RIGHT-TO-LEFT であるフォント資

源とに関して,その値の符号は,正の 方向を正とする。WRMODENAME 属性の他の値をもつフォント

資源については,この属性値の符号は定義しない。

ファミリ並びの整合が適正に動作するために,FAMILYOTHERBLUES 属性に関して次の事項を確認しな

ければならない。

(1)

各書体ファミリの 1 書体をそのファミリの標準として選択する。

(2)

ファミリの全書体が整合した底部域並びをもたせる場合は,標準的な書体の OTHERBLUES 属性の値

を標準的な書体から複製して,FAMILYOTHERBLUES 属性の値とする。

あ る フ ォ ン ト の 並 び 位 置 と , そ の フ ォ ン ト に 対 応 す る フ ァ ミ リ の 標 準 的 な 並 び 位 置

(FAMILYOTHERBLUES 属性が指定する)との差が 1 画素より小さいとき,そのフォントの通常の並び位

置の代わりに,そのファミリの標準的な並び位置を用いなくてはならない。

参考 FAMILYOTHERBLUES 属性は,同一フォントファミリのさまざまなスタイルから,ラスタ化し

たグリフ高を整合させる手段を与える。同一フォントファミリのさまざまなスタイルがテキス

ト中に混在するとき,それらの並び位置を整合させて,小さいサイズで一貫性を保つことが望

ましい場合がある。もしこの情報がないと,フォントプログラムがもつ並びヒントだけを考慮

することになる。ファミリ並び位置は,各々のフォントのディセンダ,上付き文字ベースライ

ン,序数ベースラインなどの並び位置に対応しなければならない。

FAMILYOTHERBLUES

属性::=FAMILYOTHERBLUES 属性名,

 FAMILYOTHERBLUES

属性の順序付き値リスト

FAMILYOTHERBLUES

属性名::=構造化名  --ISO/IEC 9541-3//FAMILYOTHERBLUS

FAMILYOTHERBLUES

属性の順序付き値リスト::=(整数,整数)*  −−  最大 5 対

2.6.2.5

BLUESCALE

  属性 BLUESCALE の値は,選択可能とする。そのデータ型を相対有理数とし,グ

リフのオーバシュート形状が,対応する基準位置と同じ位置でラスタ化するサイズの上限を指定する。

ALIGNNAME

属性の値が CENTRE-ALIGN であるフォント資源,又は WRMODENAME 属性の値が

TOP-TO-BOTTOM

であるフォント資源については,この属性は定義しない。

−  グリフサイズが,RELUNIT グリフ座標系単位で,BLUESCALE 属性の値が指定する画素より少ない

装置画素であれば,オーバシュート抑制を実行する。一つの並び位置にある全形状を,同一画素高で

ラスタ化する。

−  グリフサイズが,RELUNIT グリフ座標系単位で,BLUESCALE 属性の値が指定する画素数以上であ

れば,オーバシュート抑制が止まり,オーバシュートを行ってもよい。BLUESHIFT 属性がこの制御

をする。

BLUESCALE

属性の値は,オーバシュート抑制が止まる前に RELUNIT グリフ座標系単位が占める垂直


15

X 4163-1994 (ISO/IEC 9541-3 : 1994)

画素の数に直接関係する。この画素数を BLUESCALE の値に関係付ける式を,次に示す。

BLUESCALE

=画素数/RELUNITS

備考 1000 グリフ座標系単位につき公称 46 画素においてオーバシュート抑制を止めるには,

BLUESCALE

属性の値を 46/1000 に設定しなければならない。この値は,出力装置の分解能が

高いほど,より小さなサイズでオーバシュート抑制を解除し,表示装置のように分解能が低く

なると,より大きなポイントサイズでオーバシュート抑制を解除する。

並び域高の最大値とオーバシュート抑制の画素サイズとの積は,RELUNITS より小さくなければならな

い。

参考  この制約によって,オーバシュート並び域が 1 装置画素に達する前に,オーバシュート抑制を

確実に解除することができる。例えば,並び域高の最大値が 23 でかつ RELUNITS=1 000 であ

るフォントでは,オーバシュート抑制サイズは,43 画素をとることはできるが,44 画素であっ

てはならない。

BLUESCALE

属性::=BLUESCALE 属性名,BLUESCALE 属性値

BLUESCALE

属性名::=構造化名  --ISO/IEC 9541-3//BLUESCALE

BLUESCALE

属性値::=相対有理数

2.6.2.6

BLUESHIFT

  属性 BLUESHIFT は,選択可能とする。そのデータ型を整数とし,グリフ座標単

位で表す。BLUESCALE 属性の画素より大きいグリフは,BLUESHIFT 属性の値に等しいかそれより大き

いグリフ座標系の距離だけ(上部域より上に,底部域より下に)並び域の基準位置を越えるグリフ形状を,

オーバシュートする。一方,BLUESHIFT 属性の値より基準位置に近いグリフ形状は,その走査変換後の

範囲が少なくとも

2

1

画素である場合だけ,オーバシュートする。その範囲が

2

1

画素より小さい場合には,そ

の グ リ フ 形 状 を 基 準 位 置 に 並 ば せ る ラ ス タ 化 を 行 う 。 こ の 属 性 は , ALIGNNAME 属 性 が 属 性 値

CENTRE-ALIGN

をもつフォント資源,又は WRMODENAME 属性の値が TOP-TO-BOTTOM であるフォン

ト資源については定義しない。

指定が無いときの BLUESHIFT 属性の値を 7 とする。オーバシュート位置がどこにあっても,すべての

並び域に BLUESHIFT 属性を適用する。

フレクス機構を用いる場合,BLUESHIFT 属性の値は,フレクス形状の大きさの最大値より大きくする

(詳細は 2.8.3 参照)

BLUESHIFT

属性::=BLUESHIFT 属性名,BLUESHIFT 属性値

BLUESHIFT

属性名::=構造化名  --ISO/IEC 9541-3//BLUESHIFT

BLUESHIFT

属性値::=整数

2.6.2.7

BLUEFUZZ

  属性 BLUEFUZZ は,選択可能とする。そのデータ型は整数とし,水平ステム上で

並び域の効果を(両方向に)拡大するための,グリフ座標系単位の数を指定する。水平ステムの頭部が

BLUEFUZZ

単位内だけ上部域を越える場合,インタプリタはステム頭部が上部域にあるものとして処理す

る。底部域における水平ステムの下部については,インタプリタはステム下部が底部域にあるものとして

処理する。指定が無いときの BLUEFUZZ の属性の値を 1 とする。この属性は,ALIGNNAME 属性が属性

値 CENTRE-ALIGN をもつフォント資源,又は WRMODENAME の属性値が TOP-TO-BOTTOM であるフォ

ント資源については定義しない。

備考 BLUEFUZZ 属性は,幾分不正確な座標データを補正する手段を提供する。しかし,並び域のサ

イズを調整をすることで,より大きな効果が得られる(BLUEFUZZ 属性の値が 0 でない場合)

フォント中のグリフが正確に並んでいれば,BLUEFUZZ の機能を利用することは適当ではない


16

X 4163-1994 (ISO/IEC 9541-3 : 1994)

ので,BLUEFUZZ 属性の値を 0 に設定する。

BLUEFUZZ

の値が 0 でないと,並び域の範囲が拡大するので,並び域は,互いに, (2*BLUEFUZZ+1)

単位以上離すようにする。

BLUEFUZZ

属性::=BLUEFUZZ 属性名,BLUEFUZZ 属性値

BLUEFUZZ

属性名::=構造化名  --ISO/IEC 9541-3//BLUEFUZZ

BLUEFUZZ

属性値::=整数

2.6.2.8

 STEMWIDTHPROPS

  属性 STEMWIDTHPROPS の値は,1 画素の差が大きな問題となる小さいサ

イズにおいて,グリフ手続きインタプリタに対して,わずかに異なる幅をもつステムを同じ幅にラスタ化

することための,フォントレベルのステム幅ヒントの集合とする。

参考  グリフ形状をラスタ化する際の共通の問題は,グリフ輪郭線の公称ステム幅に一貫性がないこ

とにある。これはデザイナの意図,又は量子化誤差による。ステム幅のヒントは,小サイズで

ラスタ化する際には,ラスタ化の処理を支援して,ステムの幅をそろえる。サイズと解像度が

充分大きい場合には,本来のステム幅のままラスタ化を行う。

STEMWIDTHPROPS

属性::=STEMWIDTHPROPS 属性名,STEMWIDTHPROPS 属性リスト

STEMWIDTHPROPS

属性名::=構造化名  --ISO/IEC 9541-3//STEMWIDTHPROPS

STEMWIDTHPROPS

属性リスト::=(STDHW 属性|STDVW 属性|

STEMSNAPH

属性|STEMSNAPV 属性|

FORCEBOLD

属性|LANGUAGEGROUP 属性)*

2.6.2.8.1

STDHW

  属性 STDHW は,選択可能とする。その属性値は,主要な水平ステムの(グリフ座

標系単位で垂直に測った)幅を示す一つの有理数だけからなるリストとする。指定の許容値(実装依存)

内の幅をもつ水平ステムは,

すべてこの属性の値が指定する幅をもつステムと同じ画素数でラスタ化する。

この属性が無い場合,

現在のグリフ手続き中のグリフレベルヒントだけが,

ステムのラスタ化に影響する。

STDHW

属性::=STDHW 属性名,STDHW 属性値

STDHW

属性名::=構造化名  --ISO/IEC 9541-3//STDHW

STDHW

属性値::=(有理数)+  −−リスト長を 1 とする

2.6.2.8.2

STDVW

  属性 STDVW は,選択可能とする。その属性値は,主要な垂直ステムの(グリフ座

標系単位で水平に測った)幅を示す一つの有理数だけからなるリストとする。

(画素数で指定し,グリフ手

続きインタプリタが与える)許容値内の幅をもつ垂直グリフステムはすべて,この属性の値が指定する幅

をもつステムと同じ画素数でラスタ化する。この属性が無い場合,現在のグリフ手続き中のグリフレベル

ヒントだけがステムのラスタ化に影響する。

備考  最適結果を得るには,この属性の値は,そのフォントにおける主要なステムの平均幅でなけれ

ばならない。例えば,ラテンフォントでは,この属性の値は小文字グリフの直線ステムの幅と

する。イタリックフォントプログラムにおいては,この属性の値は,ステム方向に直交する角

度で測った垂直ステムの幅になる。

STDVW

属性::=STDVW 属性名,STDVW 属性値

STDVW

属性名::=構造化名  --ISO/IEC 9541-3//STDVW

STDVW

属性値::=(有理数)+  −−リスト長を 1 とする


17

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.6.2.8.3

STEMSNAPH

  属性 STEMSNAPH は,選択可能とする。その属性値は,水平ステム(垂直に測

る)に関して最も共通な幅(STDHW 属性リストが与える主要幅を含む)の 12 個までの有理数のリストと

する。これらの幅は,小さい値から順に指定する。STEMSNAPH 属性を用いる場合,STDHW 属性がなけ

ればならない。STEMSNAPH 属性が無い場合,グリフレベルヒント,及び STDHW 属性の値があれば,こ

れらだけがステムのラスタ化に影響する。

STEMSNAPH

属性は,可変幅のステムを許容値内で,低解像度装置のために,同一画素幅でラスタ化す

ることを可能にする。STEMSNAPH 属性が無い場合,現在のグリフ手続き中のグリフレベルヒントだけが

ステムのラスタ化に影響する。

STEMSNAPH

属性::=STEMSNAPH 属性名,STEMSNAPH 属性値リスト

STEMSNAPH

属性名::=構造化名  --ISO/IEC 9541-3//STEMSNAPH

STEMSNAPH

属性値リスト::=(有理数)+  −−リスト長を 12 以下とする

2.6.2.8.4

STEMSNAPV

  属性 STEMSNAPV は,選択可能とする。その属性値は,垂直ステム(水平に測

る)に関して最も共通な幅(STDVW リストが与える主要幅を含む)の 12 個までの有理数のリストとする。

この幅は,小さい値から順に指定する。イタリックフォント及びオブリクフォントについては,このリス

トを空とするか,又はこの属性を省略しなければならない。STEMSNAPV 属性を用いる場合,STDVW 属

性が無ければならない。STEMSNAPV 属性が無い場合,グリフレベルヒント及び STDVW 属性の値があれ

ば,これらだけがステムのラスタ化に影響する。

STEMSNAPV

属性は,可変幅のステムを許容値内で,低解像度装置のために,同一画素幅でラスタ化す

ることを可能にする。この属性が無い場合,現在のグリフ手続き中のグリフレベルヒントだけがステムの

ラスタ化に影響する。

STEMSNAPV

属性::=STEMSNAPV 属性名,STEMSNAPV 属性値リスト

STEMSNAPV

属性名::=構造化名  --ISO/IEC 9541-3//STEMSNAPV

STEMSNAPV

属性値リスト::=(有理数)+  −−  リスト長を 12 以下とする

2.6.2.8.5

FORCEBOLD

  属性 FORCEBOLD は,選択可能とする。その属性値は,真 (TRUE) 又は偽

(FALSE)

のいずれかとする。同一ファミリの太いフォントの特定グリフのステムが,より細いフォントの

あるステムと同じ画素数に計算された場合でも,FORCEBOLD 属性の値が真ならば,走査変換処理は太い

フォントのグリフのステムを太くしてよい。

備考 FORCEBOLD 属性は,フォントファミリの太いフォント及び通常の太さのフォントがともに 1

画素幅のステムになる小さなサイズのときも,ボールドスタイルをレギュラーフォントよりも

太く描画しなければならないことを,グリフ手続きインタプリタに伝える。FORCEBOLD 属性

は,この働きを明示的に制御できる。

FORCEBOLD

属性::=FORCEBOLD 属性名,FORCEBOLD 属性値

FORCEBOLD

属性名::=構造化名  --ISO/IEC 9541-3//FORCEBOLD

FORCEBOLD

属性値::=論理値

2.6.2.8.6

  LANGUAGEGROUP

  特定の言語圏に属する書写体系は,大まかな審美的特徴を共有している。

それらの言語グループを識別することは,正確なグリフ表現にとって明らかに有用である。

属性 LANGUAGEGROUP は,選択可能とする。そのデータ型は整数とし,着目フォントが第一に意図さ

れる言語圏を表す。T1COLOR 属性リストに指定がない場合,又は値をグリフ手続きインタプリタが認識

しない場合,LANGUAGEGROUP 属性の値は 0 とする。この規格は,次の二つの言語圏だけを定義する。

0

又は 1 以外の値は,将来の標準化のために確保する。


18

X 4163-1994 (ISO/IEC 9541-3 : 1994)

0

:ラテン,ギリシャ,キリル等

1

:日本,中国,韓国の漢字等

参考 LANGUAGEGROUP 属性の値が 1 であるフォント資源のおもな特徴として,その値が 0 である

フォント資源に比べて,グリフがより多くのステムをもつことがある。この特徴は,グリフ手

続きインタプリタが,ラスタ格子に合わせてステム幅を丸める処理に影響する。

LANGUAGEGROUP

属性::=LANGUAGEGROUP 属性名,LANGUAGEGROUP 属性値

LANGUAGEGROUP

属性名::=構造化名  --ISO/IEC 9541-3//LANGUAGEGROUP

LANGUAGEGROUP

属性値::=整数

2.6.3

T1GLYPH

  T1GLYPH 属性は,グリフ手続きの解釈過程において,グリフ手続きインタプリタが

参照するパラメタ及び手続きを構成する。T1GLYPH 属性は,アクセント付きグリフを作るための要素グ

リフのリスト,グリフの全体又は部分を描画するためのサブルーチン,ヒント関連の演算,及びグリフ手

続き暗号化を指定する。

T1GLYPH

属性::=T1GLYPH 属性名,T1GLYPH 属性値の属性リスト

T1GLYPH

属性名::=構造化名  --ISO/IEC 9541-3//T1GLYPH

T1GLYPH

属性値の属性リスト::=(GLYPHENCRYPT 属性|

LENIV

属性|

ACCENTENCODING

属性|

SUBRS

属性|

GLYPHPROCPROPS

属性リスト)*

2.6.3.1

GLYPHENCRYPT

  属性 GLYPHENCRYPT は,選択可能とする,そのテータ型は論理値とし,

グリフ手続きを暗号化するか否かを表す(2.9.2.3 及び

附属書 参照)。この属性値が真 (TRUE) である場

合 は , グ リ フ 手 続 き を 暗 号 化 し , 偽  (FALSE) で あ る 場 合 は , グ リ フ 手 続 き を 暗 号 化 し な い 。

GLYPHENCRYPT

属性が偽のとき,LENIV 属性の値は 0 でなければならない。指定が無いときの

GLYPHENCRYPT

属性の値は真とする。

GLYPHENCRYPT

属性::=GLYPHENCRYPT 属性名,GLYPHENCRYPT 属性値

GLYPHENCRYPT

属性名::=構造化名  --ISO/IEC 9541-3//GLYPHENCRYPT

GLYPHENCRYPT

属性値::=論理値

2.6.3.2

LENIV

  属性 LENIV は,選択可能とする。そのデータ型は整数とし,グリフ手続き交換様式で,

グリフ手続き演算子の先頭にあってもグリフ手続きインタプリタが無視するオクテットの数を示す。指定

しないときの LENIV 属性の値は 4 とする。

備考 LENIV 属性の値が 0 のとき,グリフ手続きのサイズを最小化する(附属書 参照)。

LENIV

属性::=LENIV 属性名,LENIV 属性値

LENIV

属性名::=構造化名  --ISO/IEC 9541-3//LENIV

LENIV

属性値::=整数

2.6.3.3

ACCENTENCODING

  属性 ACCENTENCODING は,選択可能とする。その属性値はグリフ識

別子の順序付きリストとする。この属性が存在する場合,siag 演算子(2.7.3.1.4 参照)が参照する要素グ

リフの指標付き識別子は,ACCENTENCODING 属性を参照して解釈する。ACCENTENCODING 属性が無

い場合,この値は

附属書 で定義したリストとする。

siag

演算子用いるアクセント付きグリフが ACCENTENCODING 属性の長さを越えて参照する場合の結

果は,定義しない。


19

X 4163-1994 (ISO/IEC 9541-3 : 1994)

ACCENTENCODING

属性::=ACCENTENCODING 属性名,ACCENTENCODING 属性値

ACCENTENCODING

属性名::=構造化名  --ISO/IEC 9541-3//ACCENTENCODING

ACCENTENCODING

属性値::= (整数,構造化名)+  −−

附属書 を参照。

備考  附属書 のとおり,無指定アクセント要素の表の第 1 欄及び第 2 欄は,BNF で記した整数及び

構造化名のデータ対とする。

2.6.3.4

SUBRS

  属性 SUBRS は,選択可能とする。その属性値は,グリフ手続きサブルーチンのリスト

とする。サブルーチンは,パス若しくはサブパスを描くための演算子,ヒントを定義するための演算子,

又は他のサブルーチンを呼び出すための演算子を含む,グリフ演算子のいかなる組み合せでもよい。

SUBRS

属性は,リスト中の位置を参照して用いる。SUBRS 属性は,2.8 の制約の対象となる。

SUBRS

属性::=SUBRS 属性名,SUBRS 属性値リスト

SUBRS

属性名::=構造化名  --ISO/IEC 9541-3//SUBRS

SUBRS

属性値リスト::=(GLYPHPROC 属性)+

GLYPHPROC

属性::=オクテット列  −−グリフ手続き交換様式を参照。

2.6.3.5

GLYPHPROCPROPS

  属性 GLYPHPROCPROPS は,グリフ名及びグリフ形状手続きの対で構成

する順序付きの属性リストとする。

GLYPHPROCPROPS

属性::=GLYPHPROCPROPS 属性名,GLYPHPROCPROPS 属性値リスト

GLYPHPROCPROPS

属性名::=構造化名  --ISO/IEC 9541-3//GLYPHPROCPROPS

GLYPHPROCPROPS

属性値リスト::=(GNAME 属性,

GLYPHPROC

属性)*

2.6.3.5.1

GNAME

  属性 GNAME は,そのデータ型を構造化名とし,後続の属性で形状を記述する。

GNAME

属性は,JIS X 4161 で指定する。

2.6.3.5.2

GLYPHPROC

  属性 GLYPHPROC は,特定のグリフを描画するための手続きからなるオクテッ

ト列とする。グリフ手続きは,この規格で定義するグリフ手続き演算子だけを用いなければならない。

GLYPHPROC

属性::=GLYPHPROC 属性名,GLYPHPROC 属性値

GLYPHPROC

属性名::=構造化名--ISO/IEC 9541-3//GLYPHPROC

GLYPHPROC

属性値::=オクテット列

2.7

グリフ手続きの動作内容  グリフ手続きは,おおむね宣言的な性質をもつ T1COLOR 属性とは異な

り,個別のグリフの形状をグリフ手続きインタプリタが解釈する手続き言語の形で表現する。2.7 は,グリ

フ手続き解釈処理をモデル化した仮想機械を定義し,グリフ手続き言語演算子の意味とそれらの意味を記

述する記法を示す。

グリフ手続きの動作内容を定義するためだけのモデルとして仮想機械モデルを示す。この仮想機械モデ

ルは,グリフ手続きインタプリタの現実の実装を規定するものではなく,特定のグリフ手続きインタプリ

タの実装がグリフ手続きの動作内容を実現する方法を制限するものでもない。

2.7.1

仮想機械  グリフ手続き解釈の処理は,一つの仮想機械としてモデル化できる。仮想機械モデルは,

次の要素からなる。

(1)

インタプリタ

(2)

グリフ手続き

(3)

オペランドリスト

(4)

状態変数

(5)

暗黙結果スタック


20

X 4163-1994 (ISO/IEC 9541-3 : 1994)

仮想機械の要素の定義は,次の四つの概念からなる。

(1)

オブジェクト

(2)

状態

(3)

演算

(4)

オブジェクトは,データの個別単位として,仮想機械によって操作できる。各オブジェクトは,型及び

値をもつ。2.7.2 がオブジェクト型を定義する。

仮想機械の状態は,オペランドリスト中のオブジェクトと仮想機械内部のデータの集合との組合せで決

まる。この状態は,仮想機械が実行する操作によって変わることがある。

演算は,仮想機械が行う動作をいう。これは,オブジェクトの操作及び仮想機械の状態の操作とする。

グリフ手続きの演算子,オペランドとして用いるオブジェクト及び演算以前の仮想機械の状態が,演算に

影響する。

列は,仮想機械にとって不可欠であり,0 個以上のトークンは特定の順序で解釈され,繰り返す場合も

ある。列中で実行される演算は,仮想機械の状態に累積的効果を与える。

図 で,仮想機械のモデルを説明する。

図 8  仮想機械

2.7.1.1

グリフ手続きトークン  各グリフ手続き(2.6.3.5.2 のオクテット列)は,2.9.2 で定義するグリフ

手続き交換様式でのトークンの列を含む。各トークンは,リテラル又は演算子とする。

リテラルは,グリフ手続き交換様式でのオブジェクトを表現する。すべてのオブジェクト型が交換様式

でリテラル表現をもつわけではない。

2.7.1.2

グリフ手続きインタプリタ  インタプリタは,グリフ手続き中のトークンを順次解釈する。リテ

ラルトークンを解釈し,そのリテラルが示すオブジェクトをオペランドリストの先頭に置く。

演算子トークンの解釈は,仮想機械に特定の演算子による動作を実行させる。この規格が定義する演算

子の集合及びその意味は,2.7.3.で定義する。

演算子の解釈の結果としての動作を次に示す。

(1)

オペランドリストの先頭又は末尾から(オペランドとしての)オブジェクトを削除する。


21

X 4163-1994 (ISO/IEC 9541-3 : 1994)

(2)

オブジェクトに対する計算又は他の操作を実行する。

(3)

新規オブジェクトを生成する。

(4)

オペランドリストの先頭へ(結果としての)オブジェクトを置く。

(5)

オペランドリストを消去する

(6)

状態変数の値を変更する。

(7)

グリフ座標系中にパスを構成する,又は追加する。

2.7.1.3

オペランドリスト  オペランドリストは,任意の数のオブジェクト(実装上はリストの最大サイ

ズを制限してもよい。

)を保持する両端リストとする。それは,任意のオブジェクト型の組合せを保持でき

る混成リストとする。

備考  この規格で,用語“リスト”,

“リストの先頭”

“リストの末尾”

“置く”

,及び“削除する”は,

一般的な計算機科学における用法と一致した用法で用いる。

明示オペランドとしてオブジェクトを要求する演算子は,オペランドリストの先頭又は末尾からそれら

を削除する。明示結果としてオブジェクトを返す演算子は,結果をオペランドリストの先頭に置く。

オペランドリスト上のオブジェクトは,仮想機械の状態の一部を構成する。

2.7.1.4

状態変数  仮想機械の要素の一つとして,状態変数の集合がある。これらの変数の値は,多くの

演算にとって暗黙のオペランドとして動作し,仮想機械の状態の一部を形成する。すべての状態変数の値

は,各グリフ手続きの解釈の開始に際し,それらの初期値に再設定する。

各状態変数,その型及びグリフ手続きの解釈の開始時での初期値を 2.7.1.4.12.7.1.4.6 で定義する。

2.7.1.4.1

CurremPoint

(現在点)  状態変数 CurrentPoint は,グリフ座標系における点を指定する数値の

対とする。その初期値は,未定義とする。その値は,任意のパス構成演算子を実行する以前に,必要な rpe

演算子又は xrpe 演算子によって設定する。CurrentPoint 状態変数は,グリフ座標系において,次のパス区

間を構成すべき点を相対的に指定する。CurrentPoint 状態変数の値は,rmoveto 演算子,setcurrentpoint 演算

子,rpe 演算子,xrpe 演算子などの演算子によって変わる。

2.7.1.4.2

Escapement

(送り)  状態変数 Escapement の値は,グリフ手続きを実行した後に新しい現在点

(CurrentPoint 状態変数)となるグリフ座標系における点を指定する数値の対とする。その初期値は,定義

しない。Escapement 状態変数の値は,rpe 演算子又は xrpe 演算子が変更する。

2.7.1.4.3

CurrentPath

(現パス)  状態変数 CurrentPath の値は,グリフ手続きによって構成されている

パスの現在の状態とする。その初期値は,空とする。CurrentPath 状態変数の値は,パス構成演算子が変更

する。

2.7.1.4.4

HorizontalStems

(水平ステム)  状態変数 HorizontalStems の値は,水平ヒント域を定義する数

値の対のリストとする。HorizontalStems 状態変数の初期値は,空とする。HorizontalStems 状態変数の値は,

hstem

演算子又は hstem3 演算子が変更する。

2.7.1.4.5

VerticalStems

(垂直ステム)  状態変数 VerticalStems の値は,垂直ヒント域を定義する数値の

対のリストとする。VerticalStems 状態変数の初期値は,空とする。VerticalStems 状態変数の値は,vstem 演

算子又は vstem3 演算子が変更する。

2.7.1.4.6

DotSection

(ドットセクション)  状態変数 DotSection の値は,CurrentPath 状態変数が示すパ

ス中で,フォントレベルヒントの並び域又はグリフレベルヒントの域による影響を受けないサブパスを指

定する。その初期値は,空とする。DotSection 状態変数の値は,DotSection ヒント演算子が変更する。

2.7.1.5

暗黙結果スタック  UtilSubrs 呼出しの結果は,暗黙結果スタックに置く。暗黙結果スタックから

1

項目を削除し,それをオペランドリストの先頭に置くために retval 演算子を用いてもよい。


22

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.7.2

データ型  仮想機械が処理するオブジェクトは,オブジェクトの型及び値をもつ。この規格で使用

するオブジェクト型を 2.7.2 で定義する。

2.7.2.1

オブジェクト型

2.7.2.1.1

整数  整数型のオブジェクトは,整数とする。整数型のオブジェクトのためのリテラル表現は,

2.9.2

で示す。

2.7.2.1.2

数値  数値型のオブジェクトは,小数を表現できなければならない。

2.7.3

グリフ手続き演算子  グリフ手続きを生成するのに用いる言語を構成する演算子は,機能によって

次の 5 つに分類できる。

(1)

グリフの輪郭線を開始又は終了するための演算子

(2)

パス構成演算子

(3)

ヒント演算子

(4)

算術演算子

(5)

サブルーチン演算子

グリフ手続き表記の一般形式は,次のとおりとする。

オペランドリスト

演算子  結果リスト

各演算子の符号化表現の値は,演算子名の後の括弧内に示す。演算子のコード化値は,1∼2 オクテット

値で構成する。

備考  演算子コード化値の表記は,xx/yy の形をとる,ここで xx 及び yy は,共に 00 から 15 までの範

囲の 10 進数とする。上位ニブルを xx で表現し,下位ニブルを yy で表現する。したがって,10

進法での値は 16 (xx)+yy に等しい。

グリフ手続き演算子は,オペランドをとらないか,両端オペランドリストの先頭又は末尾からオペラン

ドをとってもよい。その動作を示すため,グリフ手続き表記法での前置記号を

表 に示す。

表 1  グリフ手続き表記法での前置記号

オペランドリストの記法

動作

オペランドをとらない。

op (1)

…op (n)

リストの先頭から 個のオペランドを削除する。

*op (1)

…op (n)

リストの末尾から 個のオペランドを削除する。

実行後,グリフ手続き演算子は,オペランドリストを変更しなくても,明示的にリストをクリアしても

よく,又はリストの先頭に結果を置いてもよい。

表 に,結果を示すためにグリフ手続き表記法での後置

記号を示す。

表 2  グリフ手続き表記法での後置記号

結果リストの記法

動作

リストを変更しない(リスト上に残存する演算子は直前に参照されたものであ

っても削除されない)

result (1)

…result (n)

オペランドが存在する場合にはオペランドを削除した後に結果をリストの先頭

に残す。

*

リストを消去する

多くの演算子はオペランドリストを消去するので,一般に,グリフ手続きインタプリタのオペランドリ

スト上にオペランドが累積して,後のコマンド列がそれを削除しなくてはならないという心配はない。オ

ペランドは一般に次の演算子のためにだけ供給される。ただし,サブルーチン呼出し及び div 演算子では

例外があることに注意すること。


23

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.7.3.1

開始及び終了のための演算子  グリフ手続きは,グリフの参照点及び送りを指定するために,rpe

演算子又は xrpe 演算子のいずれかによって開始しなければならない。各グリフ手続きは,複合グリフを構

成するために siag 演算子を使う場合(2.7.3.1.4 参照)を除いて,endglyph 演算子によって終了しなければ

ならない。

図 に,グリフ手続きインタプリタのための状態遷移図を示す。

図 9  グリフ手続きインタプリタの状態遷移

2.7.3.1.1

rpe

  次に示す演算子 rpe は,グリフ参照点及び送りを指定する。

* rpx rpy ex ey

rpe (00/12 00/07) *

オペランド rpx,rpy,ex 及び ey は,数値型とする。オペランド rpx 及び rpy は,後続の相対的パス構成

演算子のために, (rpx,rpy)  に初期参照点を設定する。rpe 演算子は,CurrentPoint 状態変数の値を (rpx, rpy)

に設定し,Escapement 状態変数を (ex,ey)  に設定する。オペランド rpy 及び ey の両方の値が 0 ならば,

rpe

演算子の代わりに xrpe 演算子を用いてもよい。

rpe

演算子は,グリフパス中に参照点を置かない。パスの最初の点としては,rmoveto 演算子を用いる。

グリフ手続き中で,任意のパス構成演算子又はヒント指定演算子を使う以前に,rpe 演算子又は xrpe 演算

子のどちらかを,一度だけ使うものとする。空白グリフのような表示を行わないグリフ中では,参照点は (0,

0)

でなければならない。

オペランド ex 及び ey は,JIS X 4161-1992 のグリフ配置量情報の送り要素と重複する。この規格に適合

するフォント資源では,両者の値が少なくとも一つの表記方向モードで,同一でなければならない。

参考 rpe 演算子は,1 オクテットで−107 から 107 までを表現し,グリフ演算子のオペランドの絶対

値を縮小するので,記憶容量節約の意味で有用である。

備考 WRMODENAME 属性の値が LEFT-TO-RIGHT であるフォント資源では,rpx の値が ISO/IEC 

9541-1

//EXT

属性の 最小値から ISO/IEC 9541-1//PX を引いた値でなければならない。グリフ

手続きインタプリタの実装ベースにおける互換性のために,

rpy

の値は 0 でなければならない。


24

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.7.3.1.2

xrpe

  次に示す演算子 xrpe は,グリフの参照点及び送りを指定する。

* rpx ex

xrpe (00/13) *

オペランド rpx 及び ex は,数値型とする。オペランド rpx は,後続の相対的パス構成演算子のために,

(rpx

,0)  に初期参照点を設定する。xrpe 演算子は,CurrentPoint 状態変数の値を (rpx,0)  に設定する。

Escapement

状態変数の値を, (ex,0)  に設定する。

xrpe

演算子は,グリフパス中に参照点を置かない。パスの最初の点としては,rmoveto 演算子を用いる。

グリフ手続き中で,任意のパス構成演算子又はヒント指定演算子を使う以前に,rpe 演算子又は xrpe 演算

子のどちらかを,一度だけ使うものとする。空白グリフのような表示を行わないグリフ中で,参照点は (0,

0)

でなければならない。

オペランド ex 及び ey は,JIS X 4161-1992 のグリフ配置量情報の送り要素と重複する。この規格に適合

するフォント資源では,両者の値は少なくとも一つの表記方向モードで,同一でなければならない。

備考 WRMODENAME 属性の値が LEFT-TO-RIGHT であるフォント資源では,rpx の値は ISO/IEC 

9541-1

//EXT

属性の 最小値から ISO/IEC 9541-1//PX の値を引いた値でなければならない。

2.7.3.1.3

endglyph

  次に示す演算子 endglyph は,グリフ輪郭線定義を終了する。

endglyph (00/14) *

endglyph

演算子は,グリフ手続き中の最後の演算子でなければならない。endglyph 演算子は,PAINTTYPE

属性が示す方法で,グリフ手続きインタプリタにグリフパスを塗りつぶさせる。グリフ手続きが endglyph

演算子で終了しなければ,グリフをラスタ化しない。endglyph 演算子は,それぞれの要素グリフ手続きが

endglyph

演算子で終了するので,siag 演算子を使って定義した複合グリフに用いてはならない。

2.7.3.1.4

siag

  次に示す演算子 siag は,同一フォント中の二つの要素グリフに対する指標の参照によっ

て,アクセント付きグリフを構成する。

* arp adx ady bglyph aglyph siag (00/12 00/06) *

オペランド arp,adx 及び ady は,数値とする。bglyph 及び aglyph は,非負の整数型とする。オペランド

arp

は,アクセントの参照点の x 要素とする。この値は,アクセント自身のグリフ手続きの xrpe 演算子の

オペランド rpx 又は rpe 演算子のオペランド rpx と同じとする。アクセントの参照点をベースグリフの参照

点に対する相対位置 (adx,ady)  に置いて,複合グリフを構成する。オペランド bglyph は,ベースグリフ

のグリフ識別子に対する指標の参照とし,オペランド aglyph は,アクセントグリフのグリフ識別子に対す

る指標の参照とする。オペランド bglyph 及び aglyph は,双方ともアクセント要素表に対する指標とする。

複合グリフの構成のための siag 演算子の用法の説明は,

附属書 C C.1.1 参照のこと。

アクセント付きグリフの両要素のグリフ識別子がアクセント要素表に現れない場合,siag 演算子を用い

てアクセント付きグリフを構成してはならない。要素グリフは,それ自体が siag 演算子を用いて生成した

複合グリフであってはならない。

複合グリフを開始する rpe 演算子及び xrpe 演算子は,ベースグリフ(オペランド bglyph が参照するグリ

フ)中の対応する演算子と同じ演算子でなければならず,同じオペランドをもたなければならない。

アクセントの手続き及びベースグリフの手続きはそれぞれ既にそれ自体の endglyph 演算子で終了するの

で,siag 演算子は,アクセント付きグリフのグリフ手続き中の最後の演算子とする。

備考  この演算子の使用は,T1 フォントプログラム空間を節約する。しかし,アクセント要素表が定

義する要素をもつグリフだけに使用を制限する。複数要素からなる複合グリフを構成する一般

的方法として,サブルーチン (Subrs) の使用を推奨する。

附属書 を参照のこと。


25

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.7.3.2

パス構成演算子  グリフのパスの構成に 2.7.3.2.12.7.3.2.11 の演算子を用いる。サブパスは,そ

れ自体又は他のパスとも交差してはならない。もし,パスが交差した場合の結果は,実装に依存する。塗

りつぶすサブパスは,反時計回りに指定する。塗りつぶさないサブパスは,時計回りに指定する。

2.7.3.2.1

colosepath

  次に示す演算子 closepath は,サブパスを閉じる。

closepath (00/09) *

備考  すべてのグリフ中のサブパスは,closepath 演算子で終了しなければならない。closepath 演算子

で終了しないと,パスが画線化する場合(PaintType 属性の値が 2 の場合)

,結果は予測できな

い。この演算子は,現在点を移動しない。closepath 演算子が与えられるまで,いかなる rmoveto

演算子も有効な現在点に対して相対的でなければならない。

2.7.3.2.2

hlineto

  次に示す演算子 hlineto は,現パス(CurrentPath 状態変数)に長さ dx の水平な線区間

を追加する。

* dx

hlineto (00/06) *

オペランド dx は,数値型とする。

2.7.3.2.3

hmoveto

  次に示す演算子 hmoveto は,水平方向に dx 単位を加えて現在点(CurrentPoint 状態変

数)を移動する。これは,dx 0 rmoveto 演算子と等価とする。

*dx

hmoveto (01/06) *

オペランド dx は,数値型とする。

2.7.3.2.4

hvcurveto

  次に示す演算子 hvcurveto は,現パス(CurrentPath 状態変数)に 3 次ベジェ曲線区

間を追加する。これは,dx1 0 dx2 dy2 0 dy3 rrcurveto と等価とする(2.7.3.2.7 参照)

*dx1 dx2 dy2 dy3

hvcurveto (01/15) *

オペランド dx1,dx2,dy2 及び dy3 は,数値型とする。

備考  第 1 ベジェ接線が水平で,第 2 ベジェ接線が垂直である場合,この演算子は,rrcurveto 演算子

呼出しよりもオペランドが二つ少ない。

2.7.3.2.5

rlineto

  次に示す演算子 rlineto は,現パス(CurrentPath 状態変数)に直線区間を追加する。

* dx dy

rlineto (00/05) *

オペランド dx 及び dy は,数値型とし,現在点(CurrentPoint 状態変数)からの相対距離と解釈する。

2.7.3.2.6

rmoveto

  次に示す演算子 rmoveto は,現在点(CurrentPath 状態変数)が (x,y)  であるとき,

いかなる区間をも加えずに現在点(CurrentPoint 状態変数)を (x+dx,y+dy)  に設定して,現パス

(CurrentPath 状態変数)の新しいサブパスを開始する。ここで, (x,y)  は直前の現パスとする。

*dx dy

rmoveto (01/05) *

オペランド dx 及び dy は,数値型とする。

2.7.3.2.7

rrcurveto

  次に示す演算子 rrcurveto は,

図 の  (X

1

Y

1

)

及び  (X

2

Y

2

)

を 3 次ベジェ制御点と

して使用し,現パス(CurrentPath 状態変数)に,現在点(CurrentPoint 状態変数)  (X

0

Y

0

)

と点  (X

3

Y

3

)

の間の 3 次ベジェ曲線区間を追加する(2.4.15 の定義参照)

* dx1 dy1 dx2 dy2 dx3 dy3

rrcurveto (00/08) *

オペランドは,すべて数値型とし,直前の点に対する相対値とする。オペランドは,次の式により算出

する。

dx1

X

1

X

0

dx2

X

2

X

1

dx3

X

3

X

2


26

X 4163-1994 (ISO/IEC 9541-3 : 1994)

dy1

Y

1

Y

0

dy2

Y

2

Y

1

dy3

Y

3

Y

2

rrcurveto

演算子は,曲線を構成したのち,X

3

Y

3

を新しい現在点(CurrentPoint 状態変数)に設定する。

2.7.3.2.8

vhcurveto

  次に示す演算子 vhcurveto は,現パス(CurrentPath 状態変数)に曲線区間を追加す

る。これは,0 dy1 dx2 dy2 dx3 0 rrcurveto と等価とする(2.7.3.2.7 参照)

* dy1 dx2 dy2 dx3

vhcurveto (01/14) *

オペランド dy1,dx2,dy2,dx3 は,数値型とする。

備考  第 1 ベジェ接線が垂直で第 2 ベジェ接線が水平である場合,この演算子は,rrcurveto 演算子呼

出しよりもオペランドが二つ少ない。

2.7.3.2.9

vlineto

  次に示す演算子 vlineto は,現パス(CurrentPath 状態変数)に長さ dy の垂直の線区間

を追加する。これは,0 dy rlineto と等価とする。

* dy

vlineto (00/07) *

2.7.3.2.10

  vmoveto

  次に示す演算子 vmoveto は,垂直方向に dy 単位を加えて,現在点(CurrentPoint 状態

変数)を移動する。これは,0 dy rmoveto と等価とする。

* dy

vmoveto (00/04) *

オペランド dy は,数値型とし,正(y 増加)又は負(y 減少)でもよい。

2.7.3.2.11

  setcurrentpoint

  次に示す演算子 setcurrentpoint は,rmoveto 演算子を実行せずに,グリフインタ

プリタの中の現在点(CurrentPoint 状態変数)をグリフ絶対座標系の座標 (x, y) に設定する。

* x y

setcurrentpoint (00/12 02/01) *

これは,後続する相対的パス構成演算子のために,現在点を設定する。setcurrentpoint 演算子は,補助サ

ブルーチン 0 からの結果と共にだけ使うこと(2.8.1.1 参照)

2.7.3.3

ヒント演算子群  ヒント演算子群の使用は,グリフ手続きでは選択可能とする。

2.7.3.3.1

dotsection

  次に示す演算子 dotsection は,サブパスを区切る。

dotsection (00/12 00/00) *

dotsection

演算子が区切ったサブパスは,たとえフォントレベルのヒント域にあっても,フォントレベル

のヒント処理が制御してはならない。DotSection 演算子は,DotSection 状態変数を変更する。

ヒントに dotsection 演算子を使うときは,必ず対で使わねばならない。1 番目の dotsection 演算子は,グ

リフの区切られたサブパスを開始する最初の rmoveto の直後に指定する。2 番目の dotsection 演算子は,サ

ブパスを終了する closepath の直後に指定する。

備考  サブパスが,フォントレベルの並び域又はグリフレベルのヒント域内,又は近くにありながら,

その域に正確に並んでいないときは,そのサブパスを走査変換過程が,その域に並ぶように変

形する場合がある。ヒント置換機構が無いか,又はあっても使わないとき,サブパス位置に対

してこのような調整をすると,結果として,寸法によってはあるグリフのひずみ(歪み)とみ

なされる場合がある。ヒント置換は,これらのグリフ形状を最も正確にラスタ化するための方

法である。しかし,ヒント置換できないグリフ手続きインタプリタとの互換をとるために,ヒ

ント置換に加えて dotsection 演算子を用いてもよい。この演算子は,“i”,“j”,“!”などのグリフ

の中の点に対して用いるだけでなく,その使用が有用であるどのサブパスに対して用いてもよ

い。

2.7.3.3.2

hstem

  次に示す演算子 hstem は,1 対の数値を HorizontalStems 状態変数リストに置く。


27

X 4163-1994 (ISO/IEC 9541-3 : 1994)

* y dy

hstem (00/01) *

オペランド y 及び dy は,数値型とし,座標で y と y±dy との間の水平ステムヒント域を指定する。オ

ペランド y は,参照点に対する相対 座標値とする。y 及び dy の値は,直線ステム上の点又は曲線ステム

の極点のいずれかの位置に対応しなければならない。そうでない場合,その結果は規定しない。

備考  単一のグリフ中で,水平ステム域が互いに重なる場合は,次善の結果となり得る。ヒント置換

は,ステムの重なりを避けるために使ってもよい。ヒント置換は 2.8.2 を参照。

2.7.3.3.3

hstem3

  次に示す演算子 hstem3 は,3 対の数値型のオペランドを,HorizontalStems 状態変数リ

ストに置く。

* y0 dy0 y1 dy1 y2 dy2

hstem3 (00/12 00/02) *

オペランド y0,y1 及び y2 は,すべて参照点に対する相対 座標値とする。これらの数値は,座標で

y0

と y0±dy0 との間,y1 と y1±dy1 との間,及び y2 と y2±dy2 との間の三つの水平ステムヒント域を指

定する。

hstem3

演算子は,の値をソートして,それぞれ ymin,ymid 及び ymax と呼ぶ底部域,中間域及び上部

域を得る。対応する dy 値を,dymin,dymid 及び dymax と呼ぶ。それらのステム及びその間のカウンタは,

すべて制御の対象となる。これらの座標値は,次の制限に従わなければならない。

− dymin=dymax

− ymin+dymin/2 から ymid+dymid/2 までの距離は,ymid+dymid/2 から ymax+dymax/2 までの距離に等

しくする。つまり,底部ステムの中心から中間ステムの中心までの距離は,中間ステムの中心から上

部ステムの中心までの距離と同じとする。

グリフ手続きが hstem3 演算子をあるグリフのヒント内で使う場合,そのグリフ手続きは,hstem 命令を

使ってはならない。ヒント置換を実行するときは,一つのグリフ手続き及びそのサブルーチン内では,hstem

又は hstem3 のどちらかを単独で使うか,又はどちらも使わない。

参考 hstem3 演算子は,特に数学の合同記号又は除算記号のように,垂直方向の幅が等しく,空白部

の幅が等しい三つの水平方向の形状をもつ,記号のステム及びカウンタを制御するのに適して

いる。

2.7.3.3.4

vstem

  次に示す演算子 vstem は,1 対の数値を VirticalStems 状態変数リストに置く。

* x dx

vstem (00/03) *

オペランド x 及び dx は整数型とし,x 座標で x と x±dx との間の垂直ステムヒント域を指定する。オペ

ランド x は,参照点に対する相対 x 座標値とする。x 及び dx の値は,直線ステム上の点又は曲線ステムの

極点のいずれかの位置に対応しなければならない。そうでない場合は,その結果は規定しない。

備考  単一のグリフの中で,垂直ステム域が互いに重なる場合は,次善の結果となり得る。ヒント置

換は,ステムの重なりを避けるために使ってもよい。ヒント置換は 2.8.2 を参照のこと。

2.7.3.3.5

vstem3

  次に示す演算子 vstem3 は,3 対の数値型のオペランドを,VerticalStems 状態変数リス

トに置く。

* x0 dx0 x1 dx1 x2 dx2

vstem3 (00/12 00/01) *

これらの数値は,座標で x0 と x0±dx0 との間,x1 と x1±dx1 との間,及び x2 と x2±dx2 との間の,

三つの垂直ステムヒント域を指定する。x0, x1 及び x2 は,すべて最初の参照点に対する 座標の相対値と

する。

vstem3

演算子は,の値をソートして,それぞれ xmin, xmid 及び xmax と呼ぶ左側域,中間域及び右側

域を得る。対応する dx 値を,dxmin, dxmid 及び dxmax と呼ぶ。これらのステム及びその間のカウンタは


28

X 4163-1994 (ISO/IEC 9541-3 : 1994)

すべて制御の対象となる。これらの座標値は,次の制限に従わなければならない。

− dxmin=dxmax

− xmin+dxmin/2 から xmid+dxmid/2 までの距離は,xmid+dxmid/2 から xmax+dxmax/2 までの距離に等

しくする。つまり,左側ステムの中心から中間ステムの中心までの距離は,中間ステムの中心から右

側ステムの中心までの距離と同じとする。

グリフ手続きが vstem3 演算子をあるグリフのヒント内で使う場合,そのグリフ手続きは,vstem 命令を

使ってはならない。ヒント置換を実行するときは,一つのグリフ手続き及びそのサブルーチン内では,vstem

又は vstem3 のどちらかを単独で使うか,又はどちらも使わない。

参考 vstem3 演算子は,小文字  “m”  のようなグリフのステム及び内部の空白を制御するのに特に適

している。

2.7.3.4

算術演算子

2.7.3.4.1

div

  次に示す演算子 div は,num1 を num2 で割る。

num1 num2

div (00/12 00/12) quotient

オペランド num1 及び num2 は,数値型とする。その商 (quotient) は,数値型とする。オペランド num1

は,オペランドリストの先頭に置き,num2 がそれに続く。実行した後の結果をオペランドリストの先頭

に置く。

2.7.3.5

サブルーチン及びサブルーチン関連演算子

2.7.3.5.1

callsubr

  次に示す演算子 callsubr は,GlyphProc 属性リストの Subrs リスト中の subr_index 位置

にあるサブルーチンを呼び出す。

subr_index

callsubr (00/10) result

オペランド subr_index は,整数型とする。Subrs リストの各要素は,様式においてグリフ手続きと同じで

あり,同じ交換様式をもつ。

サブルーチンを呼び出す前に,グリフ手続きインタプリタオペランドリストの先頭に置いたオペランド

と,サブルーチンがリストの先頭に置いた 0 個以上の結果 (result) とは,そのサブルーチンの定義に従っ

ていなければならない。callsubr は明示的な結果をオペランドリストに置かないが,サブルーチン中の演算

子は結果をリストに置いてよい。

サブルーチンは,一般的には,フォントプログラム中で繰り返すパス構成演算子若しくはヒント演算子

の列を表すため,又は補助サブルーチンを呼び出すために使う。サブルーチン呼出しは,10 段階を超えた

深さの入れ子にしてはならない(2.8 を参照)

2.7.3.5.2

return

  次に示す演算子 return は,Subrs リストのサブルーチンから復帰し,呼び出したグリフ

手続きの実行を続ける。

return (00/11) −

Subrs

リストに指定のある各々の Subrs グリフ手続きサブルーチンは,return 演算子で終了しなければな

らない。

2.7.3.5.3

callutilsubr

  次に示す演算子 callutilsubr は,補助サブルーチンの呼出しに用いる。

op1

…opn n u callutilsubr (00/12 01/00) result

op1

から opn までの 個のオペランドを,補助サブルーチンに対して用意する。そのオペランドをオペ

ランドリストの先頭から取りだして,直後に実行する 番目の補助サブルーチンに渡す。retva1 演算子は,

補助サブルーチンからの結果を検索し,オペランドリストの先頭に各結果を置く(2.7.3.5.4 参照)

。したが

って,一つ以上の retval 演算子が,この callutilsubr 演算子に続いてもよい。callutilsubr の使用は,2.8 を参


29

X 4163-1994 (ISO/IEC 9541-3 : 1994)

照のこと。

補助サブルーチンは,2.7.3.5 だけで定義する。補助サブルーチンの使用法及びこの規格で定義済みの四

つの補助サブルーチンの構文を,2.8.1 に示す。

2.7.3.5.4

retval

  次に示す演算子 retval は,暗黙結果スタックから戻り値を取り出して,オペランドリス

トの先頭に置く。

retval (00/12 01/01) number

retval

演算子は,callutilsubr 演算子の直後でだけ用い,間に他の演算子を入れてはならない。

2.8

サブルーチン  フォントプログラムは,2 つのサブルーチンの集合を使ってもよい。二つのサブルー

チンの集合には,Subrs と標準の補助サブルーチンとがある。サブルーチンの使用には,次のものがある。

(1)

フォント中のグリフ間の共通要素を描く記述をまとめることによって,フォントプログラムの必要記

憶容量を削減する。

(2)

フレクス形状を必要とする場合は,Subrs 0 から Subrs 2 までをフレクス形状のために使う。フレクス

形状が必要ないときは,Subrs 0 から Subrs 2 までを他の目的に用いてもよい。

(3)

 Subr3

は,ヒント代替と共に使うために確保する。ヒント代替が必要ない場合は,Subr3 を他の目的に

用いてもよい。

(4)

  4

以上の指標をもつ Subrs は,他のグリフ手続き呼出しと共に使うことができる。

(5)

補助サブルーチン 0 から補助サブルーチン 2 までは,フレクス形状を実現する。

(6)

補助サブルーチン 3 は,ヒント置換を実現する。

Subrs

リストは,適切な交換表現で表現したグリフ手続きの部分,及びグリフ形状演算子を含むグリフ

手続きとして暗号化したグリフ手続きの部分とを含む(2.9.2 参照)

。フォントが繰返し要素を含むときは,

これらの要素は,グリフ手続きサブルーチンとして記述する候補となりうる。

備考  グリフ手続き演算子の集合は,相対形式のパス構成演算子だけを含む。例えば,その集合は

rmoveto

又は rlineto をもつが,moveto 又は lineto はもたない。相対的な演算子を使うことで,

グリフ中のその絶対位置に関係なく,グリフ輪郭線の各部分にサブルーチンを再利用すること

が容易となる。

Subrs

リストの要素は,グリフ手続きとし,return 演算子で終わらなければならない。これらのサブルー

チンは,Subrs リスト中の指標をオペランドとして使い,callsubr 演算子によって呼び出す。グリフ手続き

サブルーチンは,他のサブルーチンを 10 段階の深さまで呼び出してもよい。

グリフ手続きサブルーチンの使用は,T1 フォントプログラムの必要条件ではない。しかし,サブルーチ

ンの適切な利用によって記憶空間を大幅に削減できる。

補助サブルーチンは,

ヒント置換及びフレクス機構のために使う。

これらの補助サブルーチン手続きは,

いくつかの Subrs エントリとも協調を保って動作する。したがって,最初の四つの補助サブルーチンエン

トリと最初の四つの Subrs エントリの動作内容には固定した意味がある。フォント資源中でヒント置換又

はフレクス機構を使わない場合,対応する Subrs エントリを,その他の目的で使ってもよい。

最初の四つ以外の補助サブルーチンエントリは,将来の拡張のために確保する。

2.8.1

補助サブルーチン群呼出し

2.8.1.1

補助サブルーチン 呼出し

呼出し列:3 0 callutilsubr retval retval (08/15 08/11 00/12 01/00 00/12 01/01 00/12 01/01)

オペランド:tolerance, x, y

戻り値:  x, y


30

X 4163-1994 (ISO/IEC 9541-3 : 1994)

意味:  補助サブルーチン 0 は,フレクス機構のために用い,フレクス形状をもつ 1 対の曲線区間を

記述する列を終了させる最後の呼出しとする。この補助サブルーチンは,オペランドリスト

の先頭から三つのオペランドを取り出し,二つの結果を戻す。第一オペランドは,二つの曲

線が一本の直線としてでなく,まさに曲線として表現し得る限界値とする。その値は,フレ

クス形状のラスタ済みの高さを装置単位の

100

1

を用いて示す。第 2 及び第 3 のオペランドは,

(グリフ座標系原点に対する)グリフ座標系単位での終点の絶対座標値とする。

備考  フレクス機構は,他の方法では小寸法でうまく表現できないほど微妙な形状の比例を保つため

に使う。オーバシュート域に影響するはい(盃)状のセリフ又は他の形状のために,この制御

パラメタを 50(又は装置画素の

2

1

)とする。したがって,ラスタ化した場合,フレクス高さが

100

50

画素以上のときは曲線を使い,それ未満のときは直線を使う。2.8.3 を参照のこと。

この補助サブルーチンは,曲線の終点の x 及び y の絶対座標である二つの結果を,暗黙結果スタックに

戻す。二つの retval 演算子は,これらの値を暗黙結果スタックからグリフ手続きインタプリタのオペラン

ドリストに戻す。二つの retval 演算子の直後に setcurrentpoint 演算子(2.7.3.2.11 参照)が続かなければなら

ない。setcurrentpoint 演算子は,現在点(CurrentPoint 状態変数)を更新するために,その二つの戻り値を

オペランドとして使う。

2.8.1.2

補助サブルーチン 呼出し

呼出し列:0 1 callutilsubr (08/11 08/12 00/12 01/00)

オペランド:無し

戻り値:無し

意味:  補助サブルーチン 1 は,フレクス機構の起動に使い,その操作を初期化するための最初の呼

出しとする。この補助サブルーチンは,オペランドを必要とせず,結果は戻さない。フレク

ス曲線のはじめにおける現在点(CurrernPoint 状態変数)の座標を退避し,座標値を積

算する処理を初期化する。補助サブルーチン 2 に対する後続の呼出しが,フレクス機構にそ

の座標値を渡す。その動作内容は,2.8.3 を参照のこと。

2.8.1.3

補助サブルーチン 呼出し

呼出し列:0 2 callutilsubr (08/11 08/13 00/12 01/00)

オペランド:無し

戻り値:無し

意味:  補助サブルーチン 2 は,フレクス機構のために使う。この補助サブルーチンは,オペランド

を必要とせず,結果を戻さない。補助サブルーチン 2 の各呼出しの前に適切なオペランドを

もつ rmoveto 演算子を置かなければならない。補助サブルーチン 2 は,補助サブルーチン 0

の後処理のために,rmoveto 演算子が参照する点の座標値を積算する。その動作内容は 2.8.3

を参照のこと。

2.8.1.4

補助サブルーチン 呼出し

呼出し列:1 3 callutilsubr retval (08/12 08/14 00/12 01/00 00/12 01/01)

オペランド:subr_index

戻り値:subr_index 又は 3

意味:  補助サブルーチン 3 は,ヒント代替機構の起動に使う。この補助サブルーチンは,オペラン

ドリストの先頭から一つのオペランドを取り出す。それは置換用のヒント演算子を含む

Subr

の指標でなければならない。グリフ手続きインタプリタがヒント置換できる場合は,


31

X 4163-1994 (ISO/IEC 9541-3 : 1994)

同じ subr_index を戻し,そうでない場合は数値 3 を戻す。数値 3 は,return 演算子だ

けからなる Subr の指標とする。補助サブルーチン 3 の呼出しの後には,callsubr 演算子

が続かなければならない。その動作内容は 2.8.2 を参照のこと。

2.8.2

ヒント代替(補助サブルーチン 3)  vstem 及び hstem のステムヒントは,後続のグリフ手続きで

の全座標の扱いに影響を与える。グリフ輪郭線のある部分はあるステムヒントを必要とし,他の部分は別

のステムヒントを必要とすることがある。ステムヒントの現在の集合について,座標演算子を実行した後

で,これらのヒントを廃棄してもよく,新しいステムヒントをパス構成演算子の列の適当な箇所で指定し

てもよい。

古いステムヒントを廃棄し,新しいステムヒントを挿入するためには,Subrs リストのグリフ手続きサ

ブルーチンの中に新しいステムヒントを置かなければならない。このサブルーチンは,Subrs リストの 0

∼3 以外のどの指標に置いてもよい。このサブルーチンは,ステムヒント演算子とそのオペランドだけを

含んでいなければならない。このサブルーチン指標 subr_index を呼び出し,古いヒントを捨てて新しいヒ

ントを挿入したいグリフ輪郭線中の点に,次のグリフ手続き列を挿入する。

subrs_index 1 3

callutilsubr retval callsubr

この符号列は,次のとおりに動作する。補助サブルーチン 3 は,新しいヒント演算子を含む Subrs リス

ト内のエントリをオペランドとしてもつ。subr_index をサブルーチンに渡し,ヒント代替手続きを実行す

る。すべてのインタプリタが輪郭線の途中でのヒント廃棄の能力をもつわけではないので,ヒント代替手

続きはこの実行能力を検査する。ヒント廃棄可能であれば subr_index を戻し,不可能であれば数値 3 を戻

す。retval 演算子は,結果(3 又は subr_index のどちらか)を暗黙結果スタックからオペランドリストの先

頭に移す。callsubr 演算子が subr_index が参照するサブルーチンを,最終的に呼び出す。

Subrs

リスト内のエントリ 3 は,retum 演算子だけから成るグリフ手続きでなければならない。グリフ手

続きインタプリタが輪郭線の途中で古いヒントを廃棄する能力がないときは,この機構が新しいヒントを

無視する。

2.8.3

フレクス機構  ほぼ水平又はほぼ垂直の方向の非常にゆるい曲がりの曲線は,ラスタ装置上で近似

することは非常に難しい。それらの曲線の例には,はい(盃)状のセリフ及び先細のステムがある。フレ

クス機構は,エントリ 0, 1 及び 2 の補助サブルーチンを用いて,これらの形状を制御できる。

フレクス機構は,微妙な曲線を構成する二つのベジェ曲線を定義どおりに使うか,又は代わりに二つの

外側の終点の間の直線を使うかを決定する。その方法は,装置空間でのフレクス形状の高さが,高さ制御

パラメタより少ないかどうかを計算する。少ない場合,二つの曲線は一つの直線区間に置き換える。少な

くない場合,曲線上の点を調整して,曲線形状を適切にラスタ化する。

特定の曲線列は,その曲線上の点の並びが次の条件に適合したときだけ,フレクス機構の対象となる(

10

に例示)

(1)

列は,正確に二つのベジェ曲線区間で構成しなければならない。

(2)

外側の終点は,同じ x(又は y)座標でなければならない。つまり,それらは正確に垂直又は水平でな

ければならない。

(3)

二つの曲線が接続する終点及びその終点に隣接する制御点は,すべて連結曲線部分の水平(又は垂直)

の極点に位置しなければならない。接続点は,連結曲線部分の終点から等距離である必要はない。

(4)

外側の一つの終点と中心(接続)終点との x(又は y)座標の差(フレクス形状の高さ)は,20 単位

以下でなければならない。

はい(盃)状のセリフ(及び並び域内にあるすべてのゆるい曲線)の最良の結果を得るためには,結合


32

X 4163-1994 (ISO/IEC 9541-3 : 1994)

(中心)終点は並び域の基準位置に正確に位置しなければならない。

フレクス形状は,BLUESHIFT 属性と整合していなければならない。BLUESHIFT 属性の値は,フレクス

形状の高さの最大値より大きくなければならない。

備考  最大のフレクス形状の高さが 6 以下の場合,BLUESHIFT 属性は省略してもよい。指定がない

場合の BLUESHIFT 属性の値は 7 であるので,

フレクス形状高さの最大値が 6 より大きい場合,

この属性を明示的に設定しなければならない。

図 10  フレクス機構のための曲線の適性

二つの適切なベジェ曲線区間に対してフレクス機構を付加するには,グリフ手続き中でいくつかの変更

を行う必要がある。次の(1)(7)にこの変更を行うアルゴリズムを示す。

(1)

最初の曲線が始まる現在点の座標を記録する。これを開始点と呼ぶ。

(2)

開始点からある参照点までの相対距離を計算する。その参照点は,水平方向の曲線については,接続

点と同じ 座標をもち,開始点と同じ 座標をもつ点とする。垂直方向の曲線については,接続点と

同じ 座標をもち,開始点と同じ 座標をもつものとする。

(3)

  6

個の座標値(12 個の数値)を残し,二つの rrcurveto 演算子を取り去る。

(4)

参照点に対する,最初の対の相対座標を再計算する。


33

X 4163-1994 (ISO/IEC 9541-3 : 1994)

(5)

列の先頭に,参照点の開始点からの相対座標を挿入する。列中に 7 個の座標値(14 個の数値)が存在

する。

(6)

この座標の列の先頭に Subrs エントリ 1 の呼出しを置き,列中の 7 個の各座標対の後ごとに rmoveto

演算子及び Subrs エントリ 2 の呼出しを置く。

(7)

フレクス高さ制御パラメタ及び絶対座標で表す最終座標値を置き,最後に Subrs エントリ 0 を呼び出

す。高さ制御パラメタは,

100

1

画素を単位とした整数とする。

備考  はい(盃)状のセリフに対しては,推奨するフレクス制御パラメタは,50(

100

50

の画素)とす

る。

2.8.4

最初の四つの Subrs エントリ  フォントプログラムのグリフ手続きが,補助サブルーチンのどれか

を呼ぶ場合は,GlyphProc 属性における Subrs リストの最初の四つのエントリには,特定の演算子列からな

るグリフ手続きを用いる。フォントプログラムがフレクス機構もヒント代替も用いない場合には,この必

要はなく,最初の Subrs エントリは,通常のグリフ手続きサブルーチン列であってもよい。

フォントプログラムがフレクス機構を参照する場合の最初の三つの Subrs エントリは,次のとおりとする。

Subrs

指標番号 0:  3 0 callutilsubr retval retval setcurrentpoint return

Subrs

指標番号 1:  0 1 callutilsubr return

Subrs

指標番号 2:  0 2 callutilsubr return

フォントプログラムがヒント代替機構を参照する場合は,4 番目の Subr 指標番号 3 は,次のとおりとす

る。

return

Subrs

エントリ 1 及び 2 は,補助サブルーチンの呼出しの短縮形にすぎない。これによって,各呼出し

で,二つのグリフ手続きオクテットを省く。Subrs エントリ 3 は,グリフ手続きインタプリタがヒントを

置き換えられない場合に使う。Subrs エントリ 0 は,フレクス機構における最後の三つのオペランドを補

助サブルーチン 0 に渡す。

補助サブルーチン 0 は,最終座標及びフレクスのパラメタをオペランドとして取り,フレクス曲線の最

終点の座標を戻す。Subrs エントリ 0 は,二つの retval 演算子によって,これらの二つの座標値をオペラン

ドリストの先頭に渡し,それらを setcurrentpoint 演算子のオペランドとして使う。

2.8.5

複合グリフ  T1 フォントプログラムで複合グリフを生成するには,次の二つの方法がある。

(1)

 siag

演算子の使用(一回の起動で 2 つの要素グリフの組合せだけを許す。

(2)

 Subrs

サブルーチンの使用。

2.8.5.1

及び 2.8.5.2 が,各方法の使用条件を示し,

附属書 が各方法の使用を図示する。

2.8.5.1

複合グリフ生成のための siag 演算子の使用  siag 演算子を使うには,次の四つの条件を満たさな

ければならない。

(1)

複合グリフのグリフ識別子が存在する。

(2)

各要素グリフのグリフ識別子が存在する。

(3)

複合グリフのグリフ配置量と各要素グリフのグリフ配置量とが存在する。

(4)

要素グリフは,アクセント要素表中のグリフ指標に対応する。

二つの要素グリフを siag 演算子を使って連結し,複合グリフを作る。複合グリフを作るための siag 演算

子の使用は,C.1.1 を参照のこと。

2.8.5.2

複合グリフ生成のためのサブルーチンの使用  複合グリフの生成にサブルーチンを使うには,次

の三つの条件を満たさなければならない。


34

X 4163-1994 (ISO/IEC 9541-3 : 1994)

(1)

複合グリフのグリフ識別子が存在する。

(2)

複合グリフのグリフ配置量が存在する。

(3)

グリフ手続きが Subrs リスト中で,要素サブグリフを表現する。

二つ以上の要素 Subrs を callsubr 演算子を使って連結し,複合グリフを作る。複合グリフを作るためのサ

ブルーチンの使用法は,C.1.2 を参照のこと。

2.9

交換様式

2.9.1

T1

グリフ形状情報のためのフォント交換様式の拡張  ISO/IEC 9541 フォント資源は,1.が規定す

るグリフ形状のための ASN.1 様式又は SGML 様式と共に,JIS X 4162 が規定する ASN.1 記法又は SGML

様式のどちらかを使って定義する,T1 グリフ形状の ASN.1 様式及び SGML 様式を,次に定義する。

参考 ASN.1 様式中で,注釈として扱われている箇所は,日本語で記述する。

2.9.1.1

ASN.1

交換様式

ISO 9541-GST1 {1 0 9541 3 0 0} DEFINITIONS::

=BEGIN

IMPORTS Structured

−Name FROM ISO 9541-SN {1 0 9541 2 3}

T1-Shape

−Property−List::=SEQUENCE {

t1-name-prefixes

[0] IMPLICIT SET OF T1-Name

−Prefix OPTIONAL,

t1-general-props

[1] IMPLICIT T1-General

−Property−List,

t1-color-props

[2] IMPLICIT T1-Color

−Property−List,

t1-glyph-props

[3] IMPLICIT T1-Glyph

−Property−List}

T1-Name

−Prefix

::=SEQUENCE {

 --36

ページの

備考参照のこと。

 [0]

:IMPLICIT Code,

 [1]

:IMPLICIT Structured−Name}

T1-General

−Property−List::=SET {

password

[0] IMPLICIT INTEGER OPTIONAL,

painttyp

[1] IMPLICIT Paint

−Code,

uniqueid

[2] IMPLICIT Global

−Name OPTIONAL}

T1-Color

−Property−List::=SET {

blue-values

[0] IMPLICIT Top

−Zone−List

other-blues

[1] IMPLICIT Bottom

−Zone−List OPTIONAL,

family-blues

[2] IMPLICIT F

−Top−Zone−List OPTIONAL,

 family-other-blu

es

[3] IMPLICIT F

−Bottom−Zone−List OPTIONAL,

blue-scale

[4] IMPLICIT Rational OPTIONAL,

blue-shift

[5] IMPLICIT INTEGER OPTIONAL,

blue-fuzz

[6] IMPLICIT INTEGER DEFAULT 1,

stem-width

[7] IMPLICIT Stem-Width OPTIONAL}

T1-Glyph

−Property−List::=SET {

glyph-encrypt

[0] IMPLICIT BOOLEAN DEFAULT TRUE,

lenIV

[1] IMPLICIT Cardinal OPTIONAL,

accent-encoding

[2] IMPLICIT Acc

−Enc−List OPTIONAL,


35

X 4163-1994 (ISO/IEC 9541-3 : 1994)

subrs

[3] IMPLICIT Subr

−Procedures−List OPTIONAL,

glyph-procs

[4] IMPLICIT Glyph

−Procedure−Prop−List OPTIONAL }

Paint

−Code

::=ENUMERATED { filled (0),

outlined  (2)  }

Top

−Zone−List

::=SEQUENCE OF (INTEGER, INTEGER)

 --

リスト長は 7 対以下でなければならない。

Bottom

−Zone−List

::=SEQUENCE OF (INTEGER, INTEGER)

 --

リスト長は 5 対以下でなければならない。

F-Top

−Zone−List

::=SEQUENCE  OF  (INTEGER,  INTEGER)

 --

リスト長は 7 対以下でなければならない。

F-Bottom

−Zone−List

::=SEQUENCE OF (INTEGER, INTEGER)

 --

リスト長は 5 対以下でなければならない。

Stem

−Width

::=SET {

std-hw

[0] IMPLICIT Std

−HW−List OPTIONAL,

std-vw

[1] IMPLICIT Std

−VW−List OPTIONAL,

stem-snap-h

[2] IMPLICIT Stem

−Snap−H−List OPTIONAL,

stem-snap-v

[3] IMPLICIT Stem

−Snap−V−List OPTIONAL,

force-bold

[4] IMPLICIT BOOLEAN OPTIONAL

language-group

[5] IMPLICIT Lang

−Group−Val OPTIONAL }

Acc

−Enc−List

::=SEQUENCE OF Acc−Enc

Acc

−Enc

::SEQUENCE {

acc-comp-index

[0] IMPLICIT INTEGER

glyph-name

[1] IMPLICIT Global

−Name }

Subr

−Procedures−List  ::=SEQUENCE OF Glyph-Procedure

Glyph

−Procedure−Prop−List::= SET OF SEQUENCE {

glyph-name

[0] IMPLICIT Global

−Name,

glyph-procedure

[1] IMPLICIT Glyph

−Procedure }

Std

−HW−List

::=SEQUENCE OF Rational

 --

リスト長は 1 でなければならない。

Std

−VW−List

::=SEQUENCE OF Rational

 --

リスト長は 1 でなければならない。

Stem

−Snap−H−List

::=SEQUENCE OF Rational

 --

リスト長は 12 以下でなければならない。

Stem

−Snap−V−List

::=SEQUENCE OF Rational

 --

リスト長は 12 以下でなければならない。

Lang

−Group−Val

::=ENUMERATED { latin−based (0),

ideographic (1)}DEFAULT 0

Glyph

−Procedure

::=OCTET STRING

Global

−Name

::= SEQUENCE  {

 --36

ページの

備考参照のこと。


36

X 4163-1994 (ISO/IEC 9541-3 : 1994)

prefix-index

[0] IMPLICIT Code

OPTIONAL,

name-value

[1] IMPLICIT Structured

−Name }

Code

::=INTEGER (1 .. 255)

Rational

::=SEQUENCE {

numerator

[0] IMPLICIT INTEGER

denominator

[1] IMPLICIT INTEGER (1.. 2147483647) DEFAULT 1 }

備考 Global−Name 属性及び Name−Prefixes 属性は,フォント資源の本体又はフォント参照の中で,

(一つの Object−Name−Component と同じくらい)短い構造化名を使用して,効率的な符号化

を実現している。Name−Prefixes 属性は,各構造化名の値に指標 (prefix-index) をつけたリスト

であり,

(構造化名の定義については,JIS X 4162

附属書 を参照のこと。)この指標のついた

Global

−Name 属性は,対応する構造化名の値を補って解釈される。Global−Name 属性に指標

(prefix-index)

がない場合,指定の値がそのまま構造化名となる。Name−Prefix 属性を定めると

きには,指定済みの構造化名を確かめるための検証を実行できないので,十分注意しなければ

ならない。


37

X 4163-1994 (ISO/IEC 9541-3 : 1994)

2.9.1.2

SGML

交換様式

<!-- (C) International Organization for Standardization 1994 Permission to copy

in any form is granted for use with conforming SGML systems and

applications as defined in ISO 8879 : 1986 ; provided this notice is

included in all copies.-->

<!-- Public document type definition. Typical invocation :

<!DOCTYPE t1shapes PUBLIC

“ISO/IEC 9541-3 : 1994//DTD Type 1 Glyph Shapes//EN” -->

<!ELEMENT t1shapes-- (t1namtbl?, t1genprp, t1colprp, t1gpprp) >

<!ELEMENT t1namtbl  -o (prefix, strucnm)

--Name Prefix Table

see global name note at the end of this clause-->

<!ELEMENT prefix

-o (code)

--Name Prefix Index-->

<!ELEMENT  t1genprp  -o (password? & painttyp & uniqueid?)

--General Prop List-->

<!ELEMENT password  -o (int)

--Password-->

<!ELEMENT painttyp  -o (int)

--PaintType-->

<!ELEMENT uniqueid  -o (glbname)

--UniqueID-->

<!ELEMENT t1colprp  -o (bluevals & othrblue? & famblue? & famoblue? &

bluescal? & blueshft? & bluefuzz? & stemwdth?)

--Typographic color props-->

<!ELEMENT (bluevals | famblue) -o ((int, int) *)

--BlueValues,

 FamilyBlues

Maximum of 7-->

<!ELEMENT (othrblue | famoblue) -o ((int, int) *)

--OtherBlues,

FamilyOtherBlues,

Maximum of 5-->

<!ELEMENT bluescal  -o (relr)

--BlueScale-->

<!ELEMENT blueshft  -o (int)

--BlueShift-->

<!ELEMENT bluefuzz  -o (int)

--BlueFuzz-->

<!ELEMENT stemwdth  -o (stdhw? & stdvw? & stemsnph? & stemsnpv? &

forcebld? & langgrp?)

--Stem Width Properties-->

<!ELEMENT (stdhw | stdvw) -o (ratl)

-- Standard Horizontal/Vertical Widths -->

<!ELEMENT (stemsnph | stemsnpv) -o (ratl*)

  Horizontal/Vertical Stem Snap -->

<!ELEMENT forcebld  -o (bool)

-- ForceBold -->

<!ELEMENT langgrp

-o (card)

--LanguageGroup-->

<!ELEMENT t1gpprp

- o (glncrpt? & leniv? & accenlst? & subrs? &

 glplists?)

--GlyphProc

Properties-->

<!ELEMENT glncrpt-o (bool)

--glyphencrypt Property-->

<!ELEMENT leniv-o (card)

--lenIV-->

<!ELEMENT accenlst  -o (accentpr*)

AccentEncoding-->

<!ELEMENT accentpr  -o (accindx, glyphid)

--AccentComponentIndex/GlyphID-->

<!ELEMENT accindx

-o (int)

--Accent Component Index-->


38

X 4163-1994 (ISO/IEC 9541-3 : 1994)

<!ELEMENT subrs

-o (glyphprc

+) --Subroutines-->

<!ELEMENT glplist

-o (glprocpr*)

--Glyph Procedures List-->

<!ELEMENT glprocpr  -o (glyphid, glyphprc)

--GlyphID/Glyph Procedure Pair-->

<!ELEMENT glyphid

-o (glbname)

--GlyphID, see ISO/IEC 9541-1 : 1991-->

<!ELEMENT glyphprc  -o (#PCDATA)

--Glyph Procedure-->

<!ELEMENT glbname o o (prefix?, strucnm)

+ --Global

Name

 see

global name note at the end of this clause-->

備考 glbname 要素及び nametbl 要素は,フォント資源又はフォント参照の本体内で,(一つの Object

−Name−Component と同じくらい)短い構造化名を使用して,効率的な符号化を実現している。

nametbl

要素は,構造化名の値に指標をつけたリストであり,

(構造化名の定義については,JIS 

X 4162

附属書 を参照のこと。)この指標のついた glbname 要素は,対応する構造化名の値を

補って解釈される。glbname 要素に指標がない場合,指定の strucnm の値がそのまま構造化名と

なる。namtbl 要素を定めるときには,指定済みの構造化名を確かめるための検証を実行できな

いので,十分注意しなければならない。

2.9.2

グリフ手続きの交換様式

2.9.2.1

グリフ手続き数値表現 32 から 255 までの値をもつグリフ手続きオクテットは,整数を表す。こ

の整数値は,四つの範囲において決まる。

(1)

 32

から 246 までの間の値  (v)  をもつグリフ手続きオクテットは,  (v−139)  の整数を表す。したがっ

て,−107 から 107 までの整数値は,単一オクテットで表す。

(2)

 247

から 250 までの値  (v)  をもつグリフ手続きオクテットは,後続のオクテット  (w)  を用いて,次の

式の整数を表す。

[(v

−247)×256]+w+108

したがって,108 から 1131 までの整数値は,2 オクテットで表す。

(3)

 251

から 254 までの値  (

υ)  をもつグリフ手続きオクテットは,後続のオクテット  (w)  を用いて,次の

式の整数を表す。

−[(v−251)×256]−w−108

したがって,−1131 から−108 までの整数値は,2 オクテットで表す。

(4)

グリフ手続きオクテットが値 255 (15/15)  をもつとき,後続の 4 オクテットは,最上位オクテットが最

初にくる 32 ビットの 2 の補数の符号付き整数の要素であると解釈する。したがって,いかなる 32 ビ

ット符号付き整数も,この方法(値 255 のオクテット+後続 4 オクテット)で 5 オクテットで表せる。

2.9.2.2

グリフ演算子交換表現  グリフ演算子は,1 オクテット又は 2 オクテットで表す。単一オクテッ

トの演算子は,0 (00/00)  から 11 (00/11)  まで,又は 13 (00/13)  から 31 (01/15)  までの値をもつ 1 オクテッ

トで表す。可能なすべての演算子値を規定しているわけではない。省いた値は,この規格が将来使うため

に確保する。演算子のオクテット値が 12 (00/12)  であれば,後続のオクテットの値が演算子を示す。

備考  このエスケープ機構によって,32 個以上の演算子を表せる。2 オクテット演算子は,1 オクテ

ット演算子ほどしばしば使うものではない。この技術は,グリフ手続きの長さを最小化にする

のに役立つ。

2.9.2.3

グリフ手続き暗号化  グリフ手続きは,所有権情報付きのフォント輪郭線情報が不用意に調べら

れ,違法に複製されるのを防ぐために暗号化する。JIS X 4163 の目的は,フォントの交換を許すことであ

るので,ここに示す以外の暗号化方式又は暗号化キーを規定する必要はない。


39

X 4163-1994 (ISO/IEC 9541-3 : 1994)

グリフ手続き暗号化は,次の三つの技術の組合せとする。

(1)

疑似乱数発生器が,暗号文を作るために平文と組み合わされるキーの列を発生する。

(2)

暗号文フィードバックを用いてキー生成を行う。すなわち,暗号文の各オクテットから,後続のキー

を作る。

(3)

準乱数のオクテット列を各平文列の始めに付加して,同じ平文の暗号化のたびに,異なる暗号文を生

成する。

次に示す暗号化及び復号化のためのアルゴリズムは,ほぼ同じであるが,暗号文のオクテットを常に後

続のキーの生成に用いるという点でわずかに異なる。暗号化及び非暗号化には,二つの別の手続きを用い

なければならない。

暗号文のオクテット列を作るために,平文のオクテット列の暗号化を次のとおりに行う,

(1)

平文のオクテット列の始めに置く付加的な平文オクテットとして,個の乱数オクテットを生成する。

(2)

一つの符号なし 16 ビット整数変数 R を,暗号化キーに初期化する。

(3)

新しく付加した乱数オクテットで始まる平文の各オクテット P に対して,次の過程を実行する。

(a)

一時的変数 T に R の上位 8 ビットを代入する。

(b)

  T

と P との排他的論理和 (XOR) をとり,暗号文オクテット C を求める。

(c)

式 ((C+R) *c1+c2)mod 65536 によって R の次の値を計算する。ここで,c1 は 52845(十進数)

,c2

は 22719(十進数)とする。

暗号化キーR の初期値は 4330 とする。

この暗号化の過程は,次の C 言語プログラムによって実行できる。ここで,r を暗号化キーで初期化し

ておくこと。

unsigned short int r ;

unsigned short int c1

=52845 ;

unsigned short int c2

=22719 ;

unsigned char Encrypt (plain) unsigned char plain ;

{unsigned char cipher ;

cipher

=(plain ^ (r>>8))  ;

r

= (cipher+r) * c1+c2 ;

return cipher ;

}

備考  暗号文のオクテット列から元の平文のオクテット列を作るアルゴリズムを次に示す。

(1)

符号なし 16 ビット整数変数 R を,暗号化キー(暗号化に使うのと同じキー)に初期化する。

(2)

暗号文の各オクテット C に対して,次の過程を実行する。

(a)

一時的変数 T に R の上位 8 ビットを代入する。

(b)

  T

と C との排他的論理和をとり,平文オクテット P を求める。

(c)

式 ((C+R) *c1+c2)mod 65536 によって R の次の値を計算する。ここで,c1 及び c2 は,暗号化に使

ったものと同じ定数とする。

(3)

暗号化の際に加えたランダムなオクテットである平文の最初の オクテットを捨てる。残りの平文オ

クテットが,元の列となる。

非暗号化の過程は,次の C 言語プログラムによって実行できる。ここで,r を暗号化に用いたキーで初

期化しておくこと。


40

X 4163-1994 (ISO/IEC 9541-3 : 1994)

unsigned short int r ;

unsigned short int c1

=52845 ;

unsigned short int c2

=22719 ;

unsigned char Decrypt (cipher) unsigned char cipher ;

{unsigned char plain ;

plain

=(cipher ^(r>>8)) ;

r

=(cipher+r) * c1+c2 ;

return plain ;

}


41

X 4163-1994 (ISO/IEC 9541-3 : 1994)

附属書 A  (規格)

無指定アクセント要素表 

“識別子”の欄は,ISO/IEC 10036 登録権実体が割り当てた,登録済み識別子を列記する。

指標の欄及び“識別子”の欄は,ACCENTENCODING 属性の整数/構造化名対のために使う値を十進表

記で示す。名前の欄は参考として,グリフ手続きインタプリタの既存の実装に使われている名前を列記す

る。

“識別子”が−1 の指標で規定するエントリは,その指標に対してグリフを割り当てないことを示す。

備考  “識別子”は,グリフ構造化名とし,ISO/IEC 10036 に従って登録する。表中の“識別子”は,

正規形  “ISO/IEC 10036/RA//Glyphs::nnnnnn”  をもつ構造化名の最後のオブジェクト名要素

(nnnnnn)

とする。

指標

“識別子”

名前

0

−1

1

−1

2

−1

3

−1

4

−1

5

−1

6

−1

7

−1

8

−1

9

−1

10

−1

11

−1

12

−1

13

−1

14

−1

15

−1

16

−1

17

−1

18

−1

19

−1

20

−1

21

−1

22

−1

23

−1

24

−1

25

−1

26

−1

27

−1

28

−1

29

−1

30

−1

31

−1

32 32

space

33 33

exclam


指標

“識別子”

名前

34 34

quotedbl

35 35

numbersign

36 164

dollar

37 37

percent

38 38

ampersand

39 39

quoteright

40 40

parenleft

41 41

parenright

42 42

asterisk

43 43

plus

44 44

comma

45 45

hyphen

46 46

period

47 47

slash

48 48

zero

49 49

one

50 50

two

51 51

three

52 52

four

53 53

five

54 54

six

55 55

seven

56 56

eight

57 57

nine

58 58

colon

59 59

semicolon

60 60

less

61 61

equal

62 62

greater

63 63

question

64 64

at

65 65

A

66 66

B

67 67

C

68 68

D

69 69

E

70 70

F

71 71

G

72 72

H

73 73

I

74 74

J

75 75

K

76 76

L

77 77

M

78 78

N

79 79

O

80 80

P

81 81

Q

指標

“識別子”

名前

82 82

R

83 83

S

84 84

T

85 85

U

86 86

V

87 87

W

88 88

X

89 89

Y

90 90

Z

91 91

bracketleft

92 92

backslash

93 93

bracketright

94 94

asciicircum

95 95

underscore

96 96

quoteleft

97 97

a

98 98

b

99 99

c

100 100

d

101 101

e

102 102

f

103 103

g

104 104

h

105 105

i

106 106

j

107 107

k

108 108

l

109 109

m

110 110

n

111 111

o

112 112

p

113 113

q

114 114

r

115 115

s

116 116

t

117 117

u

118 118

v

119 119

w

120 120

x

121 121

y

122 122

z

123 123

braceleft

124 124

bar

125 125

braceright

126 126

asciitilde

127

−1

128

−1

129

−1


43

X 4163-1994 (ISO/IEC 9541-3 : 1994)

指標

“識別子”

名前

130

−1

131

−1

132

−1

133

−1

134

−1

135

−1

136

−1

137

−1

138

−1

139

−1

140

−1

141

−1

142

−1

143

−1

144

−1

145

−1

146

−1

147

−1

148

−1

149

−1

150

−1

151

−1

152

−1

153

−1

154

−1

155

−1

156

−1

157

−1

158

−1

159

−1

160

−1

161 161

exclamdown

162 162

cent

163 163

sterling

164 64943

fraction

165 165

yen

166 61346

florin

167 167

section

168 36

currency

169 169

quotesingle

170 170

quotedblleft

171 171

guillemotleft

172 61226

guilsinglleft

173 61227

guilsinglright

174 61472

fi

175 61473

fl

176

−1

177 61220

endash

指標

“識別子”

名前

178 61232

dagger

179 61233

daggerdbl

180 183

periodcentered

181

−1

182 182

paragraph

183 61286

bullet

184 8973

quotesinglbase

185 61224

quotedblbase

186 186

quotedblright

187 187

guillemotright

188 9284

ellipsis

189 61249

perthousand

190

−1

191 191

questiondown

192

−1

193 193

grave

194 194

acute

195 195

circumflex

196 196

tilde

197 197

macron

198 198

breve

199 199

dotaccent

200 200

dieresis

201

−1

202 202

ring

203 203

cedilla

204

−1

205 205

hungarumlaut

206 206

ogonek

207 207

caron

208 61221

emdash

209

−1

210

−1

211

−1

212

−1

213

−1

214

−1

215

−1

216

−1

217

−1

218

−1

219

−1

220

−1

221

−1

222

−1

223

−1

224

−1

225 225

AE


44

X 4163-1994 (ISO/IEC 9541-3 : 1994)

指標

“識別子”

名前

226

−1

227 227

ordfeminine

228

−1

229

−1

230

−1

231

−1

232 232

Lslash

233 233

Oslash

234 234

OE

235 235

ordmasculine

236

−1

237

−1

238

−1

239

−1

240

−1

241 241

ae

242

−1

243

−1

244

−1

245 245

dotlessi

246

−1

247

−1

248 248

lslash

249 249

oslash

250 250

oe

251 251

germandbls

252

−1

253

−1

254

−1

255

−1


45

X 4163-1994 (ISO/IEC 9541-3 : 1994)


46

X 4163-1994 (ISO/IEC 9541-3 : 1994)

附属書 B  (参考)

B.1

グリフ手続きインタプリタの既存の実装との互換性 

既存の実装との互換性  この規格の 2.とほとんど互換性をもつグリフ手続きインタプリタについては,約

100

万の既存の実装が存在する。この規格に適合したフォントプログラムが,グリフ手続きインタプリタ

のこれらの既存の実装と下位方向互換性を保つためには,次の指針に従うことが望ましい。

B.1.1

  GLYPHENCRYPT

  グ リ フ 手 続 き イ ン タ プ リ タ の 既 存 の 実 装 と の 互 換 性 を 保 つ た め に ,

GLYPHENCRYPT

属性の無指定値を真とし,暗号化キーの値を 4330 とする。この暗号化は,不用意で違法

な複製を防ぐことだけに役立つ。フォント情報交換規格の目的は,フォントの交換であるので,他の暗号

化キーの値又は暗号化形式は規定しない。

B.1.2

  LENIV

  PostScript

TM

インタプリタの 23.0 版(Apple

®

LaserWriter

®

のオリジナルに使っている)との

互換性を保つために,LENIV 属性の値は 4 に設定する。この互換性が不要であれば,グリフ手続きの大き

さを最小化するために,その値を 0 又は 1 にできる。

参考 PostScript

TM

は,実際に入手可能な製品の一例として,この規格の利用者の利便を図るために示

したもので,ISO/IEC 製品として保証をそれに与えるものではない。

B.1.3

仮想ステム用のヒント域  グリフの上部及び底部の先端を,フォントレベルの BLUEVALUES 属性

及び OTHERBLUES 属性の値の位置にそろえるとき,これらのステムヒント用の値が取り得る値を制限し

て,インタプリタの既存の実装を正しく動作させる,仮想ステム用のヒント域は,垂直方向の高さをグリ

フ座標系単位で 20 又は 21 に生成する。これらのヒント域は,そのグリフの y 座標域の内側の y 座標の範

囲を記述する。

B.1.4.

 ROUNDSTEMUP

  T1 フォントプログラムのインタプリタの既存の実装との互換性を保つため,言

語グループ 1 を指定するフォントプログラムは,

T1GLYPH

属性リスト

2.6.3 参照)

に必ず ROUNDSTEMUP

属性ももち,その論理値を偽とする。

T1COLOR

属性リスト(2.6.2 参照)中の LANGUAGEGROUP 属性によって,ROUNDSTEMUP 属性が置

き換わり,言語グループ 1 を指定しないかぎり,フォントプログラム中で ROUNDSTEMUP 名を参照しな

い。

ROUNDSTEMUP

属性::=ROUNDSTEMUP 属性名,ROUNDSTEMUP 属性値

ROUNDSTEMUP

属性名::=構造化名 ISO/IEC 9541-3//ROUNDSTEMUP

ROUNDSTEMUP

属性値:: FALSE

B.1.5

  MINFEATURE

  グ リ フ 手 続 き イ ン タ プ リ タ の 既 存 の 実 装 と の 下 位 方 向 互 換 性 を 保 つ に は ,

T1GLYPPH

属性リストに MINFEATURE 属性を含める。

MINFEATURE

属性::=MINFEATURE 属性名,MINFEATURE 属性値

MINFEATURE

属性名::=構造化名 ISO/IEC 9541-3//MINFEATURE

MINFEATURE

属性値リスト::=16, 16

B.1.6

  PASSWORD

  既存の実装との互換性を保つには,PASSWORD 属性をもち,その値を 5839 とする。

B.1.7

アクセント要素表  アクセント要素表の機能は,グリフ手続きインタプリタの既存の実装とは下位

方向互換性が無い。既存の実装と互換性を保つには,アクセント要素表をもってはならず,従って

附属書

A

の無指定アクセント要素表を使う。フォントが独自のアクセント要素表を指定し,その表が無指定アク

セント要素表のグリフを含むならば,

附属書 の名前欄が指定する名前を必ず用いなければならない。


47

X 4163-1994 (ISO/IEC 9541-3 : 1994)

B.1.8

交換様式  GLYPHPROPS 属性中の MINFEATURE 属性及び ROUNDSTEMUP 属性についての ASN.1

定義及び SGML 定義を B.1.8.1 及び B.1.8.2 に示す。

B.1.8.1

  ASN.1

交換様式  次の二つの属性を GlyphProps 属性とし,T1−Glyph−Property−List(2.9.1.1 参照)

に含める。

minfeature

[5] IMPLICIT MinFeature-List

OPTIONAL,

roundstemup

[6] IMPLICIT RndStmUp

OPTIONAL,

MinFeature

−List::=SEQUENCE OF {

IMPLICIT INTEGER (16),

IMPLICIT INTEGER (16)}

RndStmUp::

=IMPLICIT BOOLEAN

B.1.8.2

  SGML

交換様式  次の SGML 定義は,2.9.1.2 の tlgpprp の ELEMENT 宣言を置き換える。

<!ELEMENT t1gpprp

−o (glncrpt? & leniv? & accenlst? & subrs? &

glplists? & minfetur & rndstmup)

--GlyphProc Properties

−−>

<!ELEMENT glncrpt

−o (bool)

--glyphencrypt Property

−−>

<!ELEMENT leniv

−o (card)

--lenIV

−−>

<!ELEMENT accenlst

−o (accentpr*)

--AccentEncoding

−−>

<!ELEMENT accentpr

−o (accindx, glyphid)

--AccentComponentIndex/GlyphID

−−>

<!ELEMENT accindx

−o (int)

--Accent Component Index

−−>

<!ELEMENT subrs

−o (glyphprc+) --Subroutines−−>

<!ELEMENT glplist

−o (glprocpr*)

--Glyph Procedures List

−−>

<!ELEMENT glprocpr

−o (glyphid, glyphprc) −

--GlyphID/Glyph Procedure Pair

−−>

<!ELEMENT glyphid

−o (glbname)

--GlyphID, see ISO/IEC 9541-1 : 1991

−−>

<!ELEMENT glyphprc

−o  (#PCDATA)

--Glyph  Procedure

−−>

<!ELEMENT glbname  o o (prefix?, strucnm)

+ --Global

Name

−−>

<!ELEMENT minfetur

−o  (int,  int)

--MINFEATURE  "16,  16"

−−>

<!ELEMENT rndstmup

−o (bool)

--ROUNDSTEMUP "false"

−−>


48

X 4163-1994 (ISO/IEC 9541-3 : 1994)

附属書 C  (参考)

複合グリフ 

C.1

複合グリフ  出版文書処理のモデル/工程全体の幾つかの場面で,複合グリフを組版することがあり

得る。しかし,例えば文書組版に際して複合グリフを生成する場合とは異なり,T1 グリフ形状表現は,グ

リフ演算子の列を用いた形状記述においてだけ,複合グリフを作成することが可能である。

C.1.1

  siag

演算子を用いた複合グリフの生成  siag 演算子を用いて,二つの要素グリフを結合し一つの複合

グリフを生成できる。

図 C.1 に “0” (グリフ指標 79)と鋭アクセント(グリフ指標 194)との複合結果の

アクセント付きグリフを示す。

この “0” (グリフ指標 79)を構成する手続きを,次のとおりとする。

46 795 xrpe

(ヒント演算子は省略)

35

−16 rmoveto

(パス構成演算子は省略)

closepath

endglyph

鋭アクセント(グリフ指標 194)のための手続きを,次のとおりとする。

123 360 xrpe

(ヒント演算子は省略)

145 577 rmoveto

(パス構成演算子は省略)

closepath

endglyph

このとき,複合グリフを構成する手続きは次のとおりとなる(分かりやすくするため,ヒント演算子は

省略した)

46 795 xrpe

99 338 172 79 194 siag

endglyph

xrpe

演算子及びそのオペランドは必ず親グリフのそれと等しくなければならない。

図 C.1 に siag 演算子

を用いた複合グリフの構成を示す。


49

X 4163-1994 (ISO/IEC 9541-3 : 1994)

図 C.1siag 演算子を用いた複合グリフの構成

(要素グリフ及び最終的な複合グリフを示す。

C.1.2

サブルーチンを用いた複合グリフの生成  複合グリフの生成には,サブルーチンの使用が最も一般

的で柔軟な方法である。例えば,次の手続きは片仮名のグリフ“ガ”の複合グリフを構成する(選択可能

のヒント演算子は示していない)

30 800 xrpe

170 620 rmoveto

7 callsubr

540 80 rmoveto

8 callsubr

endglyph

図 C.2 に各サブルーチンが構成するサブパス及び結果のグリフを示す。

図 C.2−サブルーチンを用いた複合グリフの構成


50

X 4163-1994 (ISO/IEC 9541-3 : 1994)

付属書 D  (参考)

交換例 

グリフ手続き中の演算子値の表現を分かりやすく示すために,ブロック体の “C” (

図 D.1 に図示)を例

にとる。この字形は,グリフ座標系において 700 単位×700 単位の寸法をもつ。この字形の送りを 800 単

位(水平)として,送りの幅の中心に置くために,参照点の値を 50 単位とする。各ステムの幅は 100 単位

とする。この例は,ステムに関してグリフレベルのヒント域を宣言する方法を示す。

このグリフ手続き定義は,グリフ座標系の整数座標による表現で始まる。

50 800 xrpe 0 100 vstem 0 100 hstem 600 100 hstem

0 0 rmoveto 700 0 rlineto 0 100 rlineto

−600 0 rlineto

0 500 rlineto 600 0 rlineto 0 100 rlineto

−700 0 rlineto

closepath

備考 vstem 演算子及び hstem 演算子のオペランドの値は,参照点からの相対値とする。

図 D.1  符号化の例に用いる単純なグリフ

xrpe

演算子は,CurrentPoint 状態変数を設定するだけで,グリフのパス上に実際にその点を置くものでは

ないので,最初の rmoveto 演算子(又はそれに等価なもの)が必要となる。この例では,パス状の最初の

点は参照点と同じであり,したがって rmoveto 演算子の二つのオペランドの値を 0 とする。別のグリフ手

続きでは,最初の moveto 位置は,必ずしも参照点と同じである必要はない。

多くの水平及び垂直の rlineto 命令があることに注意し,それらを hlineto 及び vlineto に置き換えてデー

タ量を効率化する。そして,endglyph 演算子でグリフを完成する。

50 800 xrpe 0 100 vstem 0 100 hstem 600 100 hstem

0 hmoveto 700 hlineto 100 vlineto

−600 hlineto

500 vlineto 600 hlineto 100 vlineto

−700 hlineto

closepath endglyph

グリフ手続き数値表現に従って整数値を表現する。

189 249 180 xrpe 139 239 vstem 139 239 hstem 248 236 239 hstem

139 hmoveto 249 80 hlineto 239 vlineto 252 236 hlineto

248 136 vlineto 248 236 hlineto 239 vlineto 253 80 hlineto

closepath endglyph


51

X 4163-1994 (ISO/IEC 9541-3 : 1994)

演算子を,グリフ手続き演算子表現に従って変換する。

189 249 180 13 139 239 3 139 239 1 248 236 239 1

139 22 249 80 6 239 7 252 236 6

248 136 7 248 236 6 239 7 253 80 6

9 14

この例を図示するために,この数値列をオクテット表記法で書き換えて次に示す。

11/13 15/09 11/04 00/13 08/11 14/15 00/03 08/11 14/15 00/01 15/08

14/12 14/15 00/01 08/11 01/06 15/09 05/00 00/06 14/15 00/07 15/12

14/12 00/06 15/08 08/08 00/07 15/08 14/12 00/06 14/15 00/07 15/13

05/00 00/06 00/09 00/14

GLYPHENCRYPT

属性の値が真である場合,このオクテット列を必ず暗号化しなければならない。グリ

フ手続き暗号化では,変数 R の初期値は,4330(十進数)とする。乱数オクテットの数 をフォント中で

指定する。指定のない場合,その値を 4 とする。しかし,LENIV 属性名が T1GLYPH 属性リスト中に存在

する場合,は LENIV 属性のもつ値とする。

グリフ手続き暗号化は,最初の暗号文オクテットの値に制限を設けない。

上記の例を暗号化するには,次の手続きを用いる。上記の 37 オクテットが,グリフ手続きの平文を構成

する。四つの乱数平文オクテットを生成して,この平文グリフ手続きの先頭に追加する。この例では(説

明を容易にするため)四つのゼロを用いると,次の平文となる。

00/00 00/00 00/00 00/00 11/13 15/09 11/04 00/13 08/11 14/15 00/03

08/11 14/15 00/01 15/08 14/12 14/15 00/01 08/11 01/06 15/09 05/00

00/05 14/15 00/07 15/12 14/12 00/06 15/08 08/08 00/07 15/08 14/12

00/06 14/15 00/07 15/13 05/00 00/06 00/09 00/14

グリフ手続き暗号化を施して,オクテット列として表される次の 41 オクテットの暗号文を作成する。

01/00 11/15 03/01 07/00 04/15 10/11 05/11 01/15 00/03 15/09 11/06

08/11 01/15 03/09 10/06 06/05 02/01 11/01 08/04 01/15 01/04 08/01

06/09 07/15 08/14 01/02 11/07 15/07 13/13 13/06 14/03 13/07 02/04

08/13 09/06 05/11 01/12 13/04 05/14 02/01 01/04

最後に,この暗号化したグリフ手続きを,バイナリ形式で表現する。


52

X 4163-1994 (ISO/IEC 9541-3 : 1994)

電子文書処理システム標準化調査研究委員会  構成表

氏名

所属

(委員会)

斎  藤  信  男

慶応義塾大学

安  達      淳

沖電気工業株式会社

池  田  克  夫

京都大学

大  泊      勝

株式会社 NEC 総研

小笠原      治

社団法人日本印刷技術協会

奥  村      康

株式会社日経 BP 社

小野沢  賢  三

株式会社写研

桐  谷  俊  雄

社団法人日本事務機械工業会

小  林      茂

日本ユニシス株式会社

小  林  龍  生

株式会社ジャストシステム

小  町  祐  史

松下電送株式会社

芝  野  耕  司

東京国際大学

瀬戸屋  英  雄

通商産業省工業技術院標準部

高  橋      亨

株式会社日立製作所

武  田  博  直

株式会社セガエンタープライゼズ

田  中  省  三

富士通株式会社

中  原      康

株式会社東芝

中  村  茂  之

日本アイビーエム株式会社

野  瀬  康  矩

社団法人日本新聞協会

深  見  拓  史

凸版印刷株式会社

藤  井  照  穂

マイクロソフト株式会社

宮  内  久  男

株式会社岩波書店

安  田  寿  明

文教大学

渡  辺  信  一

大日本印刷株式会社

(事務局)

渡  辺  清  次

財団法人日本規格協会


53

X 4163-1994 (ISO/IEC 9541-3 : 1994)

日本事務機械工業会  文書記述・フォント JIS 原案作成委員会  構成表

氏名

所属

(委員長)

池  田  克  夫

京都大学

(副委員長)

小  町  祐  史 SC18/WG8 国内委員会

(松下電送株式会社)

三  宅  信  弘

通商産業省機械情報産業局

竹田原  省  二

通商産業省工業技術院標準部

瀬戸屋  英  雄

通商産業省工業技術院標準部

渡  辺  清  次

財団法人日本規格協会

篠  崎  徳  量

愛知女子短期大学

小笠原      治

社団法人日本印刷技術協会

宮  内  久  男

株式会社岩波書店

田  中  洋  一

凸版印刷株式会社

空  閑      明

共同印刷株式会社

山  田      進

大日本スクリーン製造株式会社

石  井      裕

大日本印刷株式会社

杉  安  孝  信 NTT データ株式会社

小野沢  賢  三

株式会社写研

宮  本  義  昭

日本ユニシス株式会社

臼  井  清  文

セイコーエプソン株式会社

伊  藤      晃

日本情報科学株式会社

藤  田  克  彦

株式会社リコー

柳  沢  一  大

日本電気株式会社

高  橋      亨

株式会社日立製作所

安  達      淳

沖電気工業株式会社

(事務局)

桐  谷  俊  雄

社団法人日本事務機械工業会

プロジェクトリーダ会議  構成表

氏名

所属

(リーダー)

小  町  祐  史 SC18/WG8 国内委員会

(松下電送株式会社)

小笠原      治

社団法人日本印刷技術協会

高  橋      亨

株式会社日立製作所

安  達      淳

沖電気工業株式会社

佐  野  浩  一

通商産業省工業技術院標準部

田  中  洋  一

凸版印刷株式会社

今  郷      詔

株式会社リコー

筧      捷  彦

早稲田大学

フォントプロジェクト  構成表

氏名

所属

(リーダー)

小笠原      治

社団法人日本印刷技術協会

小  町  祐  史

松下電送株式会社

武  居  則  幸

セイコーエプソン株式会社

石  井      裕

大日本印刷株式会社

竹  内  時  男

株式会社写研

山  本  太  郎

アドビシステムズジャパン