#?SuikaWiki/0.9
[1] 【[[SGML]]】 [[具象構文]]によって割当てられ、[[マーク]]として認知された上で [[SGML機能]]を果たす[[マーク文字]]。[[データ]]が許される[[文脈]]でマークとして[[認知]]されない場合は、データとして扱う (機能文字の[[記録開始]] [CODE(SGML)[[[RS]]]] 及び[[記録終了]] [CODE(SGML)[[[RE]]]] の場合のように、[[言語]]が特別の扱いを指示する場合を除く。)。  Function character。 ([[JISX4151]]‐1992 定義 (46))

- [2] [CODE(ABNF)[[DFN[機能文字]] := RE / RS / [[SPACE]] / [[SEPCHAR]] / [[MSOCHAR]] / [[MSICHAR]] / [[MSSCHAR]] / [[FUNCHAR]] ;; (54)]]

[[#comment]]

* 機能文字に関する SGML 宣言の定義の例
[[#comment]]
** 装置独立の多符号具象構文のための機能マーク文字

[3] JIS X 4051‐1992 の参考6図14のものです。
[PRE[
FUNCTION
  RE              13  -- 0/13 CR --
  RS              10  -- 0/10 LF --
  SPACE           32  -- 2/0  SP --
  TAB   SPACECAHR  9  -- 0/9  TAB --
     -- 幾らなんでも SEPCHAR の間違いだよね? --
  ESC   FUNCHAR   27  -- 1/11 ESC --
  LS0   FUNCHAR   15  -- 0/15 LS0 / SI --
  SS2   FUNCHAR  142  -- 8/14 SS2 --
  SS3   FUNCHAR  143  -- 8/15 SS3 --
]PRE]

前提となっている[[符号拡張]]は、
- [[G0]] = [[GL]] : 全ての図形[[マーク文字]]を含む
- [[G1]] = [[GR]]; G1 への[[指示シーケンス]]を使用
- G1, [[G2]], [[G3]]; 各々への指示シーケンスを使用; [[固定シフト]]で右に[[呼出]]し
- G2, G3: [[単独シフト]]で左に呼出し

[4] この前提だと [CODE(char)[[[LS0]]]] は要らないと思うんだけどなぁ。あっても無害だけど。

なお、 [CODE(char)[[[LS1R]]]], [CODE(char)[[[LS2R]]]],
[CODE(char)[[[LS3R]]]] がいずれも機能文字になってないのは、
単一の[[制御文字]]ではなく複数文字の[[エスケープシーケンス]]になってしまうからです。

ところで、これじゃあエスケープシーケンスの[[中間バイト]]や[[終端バイト]]が[[重要なSGML文字]]だった場合に誤認されちまいませんか?
まさか終端バイトまでマーク読み飛ばしにするわけにもいかないし。。。[WEAK[(3/0〜7/14 を機能文字にするのはかなり勇気が要る。)]]

- [5] >>4 参考6 3.1.1 ではそれを避けるためにエスケープシーケンス全体を[[短縮参照区切子]]にしてしまう方法を紹介しています。・・・って、使うエスケープシーケンスを全種類登録するんですか。。。
[[#comment]]
