

RTFパーサーを作るぜ☆
会話
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 39 分
解析倶楽部を発足するぜ☆
一発目はRTF;Rich Text Formatだぜ☆ http://grayscale.iza-yoi.net/
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 34 分
@**** RTFを解析できると、この無料ソフトが作れるわけだぜ☆
http://www.vector.co.jp/soft/dl/winnt/writing/se502162.html …
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 30分
@**** 携帯で絵文字が打ち込めるように、RTFもテキストの中に絵を打ち込めるのだが、
画像リンクではなく本当に1ドット1ドット テキストファイルに打ち込むという
前世紀の仕様を引きずっているので 独自仕様に改造するんだぜ☆
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 27分
@**** メタファイル形式という名前の画像形式で保存されているぜ☆
ベクターグラフィックスもラスターグラフィックスも、文字で保存する☆
文字で保存されているので画像もメモ帳で開くことができる。
中には 9fb7cf9fb7cf9fb7cf9…略 と書いてあるぜ☆
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 23分
@**** 仕様書があればプログラマは一から模造品を作るのだが
メタファイルの仕様書は公開されてないので、
メタファイルを使わないRTFを独自に作ろうと考えている☆
ワードパッドで開いても画像は表示されないが、
自分で作ったアプリでなら画像が表示されるという想定だぜ☆
むずでょ@スキルLv5の消極的姿勢 ?@muzudho1 13分
@**** 2014年の文明度では ネット、PCハード、OS全て未熟で
テキストを送受信するだけでもサーバーが落ちPCは強制終了するが、
100年も経てばツイッターの画面に直接ゲームのタイトル画面を送りつけ
ゲームが始まる、ぐらいあるだろう☆ 発電所が足りないぜ☆
むずでょ@スキルLv5の消極的姿勢@muzudho1
1abc2def3ghi を 1abc 2def 3ghi に切り、
1:abc 2:def 3:ghi と豚に識別記号を付けるように 文字にも名づけ、
あとはそれなりに使う☆
解析とは、これ以上のことはやってない☆
これを解析倶楽部で解明し、広めていくぜ☆
むずでょ@スキルLv5の消極的姿勢@muzudho1
@どこで切るか、
A切れ端の名前は何だ、
B切れ端はどう使うのか☆
これだけだぜ☆
独自に制御ワードを追加
制御ワードは自分で作ることができる。
<サンプル>
{\tepicttbl{\tep0\tepw32\teph48}}
例えば、先頭の方に追加する。
<サンプル>
{\rtf1\ansi\ansicpg932\deff0{\tepicttbl{\tep0\tepw32\teph48}}{\fonttbl{\f0\fnil\fcharset128 MS UI Gothic;}{\f1\fswiss\fcharset0 Arial;}}
{\colortbl ;\red255\green0\blue0;\red255\green255\blue255;}
\viewkind4\uc1\pard\lang1041\b\f0\fs36\'8b\'4e\'93\'ae\'8e\'9e<※〜以下略>
アプリケーションは、読めない制御ワードは無視する。
C#
現在、独自RTFを開発中。
ソースは4つに分けている。L番号を振っており、年取った番号は若い番号を呼び出す。
・Csvexe_L01_Syntax ←ログ等
・Csvexe_L02_Table ←CSV等
・Xt_L12_Lib ←いろいろ
・Xt_L13_RichCombo ←これをデバッグ実行するとフォームが出る。RTFパーサーはここ。
kaisekiKurabuNo1_1_ws.zip(※開発途中。乱雑にソース詰め込み)
RTFでのよくある手筋。一括定義&頻発参照
文章では、フォントの切替が頻出する。(色、太さ、ゴシック/明朝 etc...)
これをその都度 指定していては、本文より指定の方が長くなる。
そこで、登場する指定は 全てヘッダーに定義しておき番号を振っておく。
切替箇所では、その番号を指定する。
RTFには、
・フォントを一括定義したフォントテーブル、
・カラーを一括定義したカラーテーブル
などがある。
このパターンに従えば、独自仕様も追加できる。
仕様書
http://www.microsoft.com/en-us/download/details.aspx?id=10725
ページ1
@Rich Text Format (RTF) Specification Version 1.9.1
Aマイクロソフト社の責任ではないですよ、という項目の列挙。2008年。
Bマイクロソフトの商品の列挙。
Cライセンスへのリンク。
─
ページ2
@Rich Text Format (RTF) Specification
A最新情報はこちら(2008年) http://www.microsoft.com/office/
B日付
Cバージョンとサブタイトル。本文は278ページあるよ。
Dワードの自動補完を切らないと文章が崩れる恐れがありますという注意。
─
ページ3
@目次。
─
(3) 目次
(4) まえがき
↓文法↓
(4) 基本的なEntities
(7) RTFリーダーのConventions
(8) 書式
↑文法↑
(9) RTFファイルの目次
(9) 目次
(35) ドキュメント・エリア
(95) テーブルの行のヘッダー。この行が現在のテーブルが現れる毎ページの一番上に表れるに違いありません。
(201) 東アジアをサポート
(201) エスケープする表現
(202) 文字セットとマッピング
(209)付録A:サンプルRTFリーダ・アプリケーション209
(209)RTFリーダに書く方法
(210)RTFリーダの実装のサンプル
(214)他のRTFフィーチャーズの実装について
(214)RTFの中の他の問題領域
(215)プログラム・リスト
(233)付録B:RTF制御ワードのインデックス
(278)付録C:導入された制御ワード、特定/他のマイクロソフト製品
(278)ポケット単語およびRichEdit
(279)交換(RTFの中で使用された? HTML転換)
(279)マイクロソフト・オフィスOutlook(RTF電子メールの中で使用された)
(279)参照
ページ4
まえがき
@何をRTFというか。
A異なるワープロや、異なるOSの間で データを受渡しするのに役立ちます、ソフトに依存しますが。といった話し。
B古いRTFリーダーは最新のRTFを読めるし、最新のRTFリーダーは古いRTFを読めます、といった話し。
Cその他いろいろ大事な話し。
基本的な Entities
@RTFファイルは 7ビットのASCII文字です、といった話し。
A
・通常制御ワード
・コントロール・シンボル
・グループ
で構成されます、といった話し。
B7ビットなので色んなOSで使える、といった話し。
C8ビット文字と、バイナリ―・データ(「\binN」参照)が、何とかかんとかといった話し。
DRTFは殆どのテキストファイルとは変わってて、キャリッジリターン/ラインフィードのペア(CRLF)は要らない。
また、それらが制御ワードの終端区切り(デリミッター)として働くことができるという点を除いて、CRLFはRTFリーダによって無視されるべきです、といった話し。
ECRLFが「メジャー・グループ」の境界にある場合、RTFファイルは判読できます、といった話し。
RTFの制御ワード(Control Word)
@何を 制御文字と言えるか、といった話し。
・モニターのディスプレイ用の文字、
・あるいはプリンタのために予定された文字
をマークするために使用される、特にフォーマットされたコマンドです。
A制御ワードの名前は32個の文字より長くなることはありません。
B制御ワードは次の文字でできています。
\
ここで、というのは 制御ワードの名前の終了を示します。
例えば、\par です。
ページ5
RTF制御ワードの続き
略。
単位(Units)
インチとか。略。
ページ6
コントロール・シンボル
略。
グループ
略。
Destinations
略。
ページ7
Destinationsの続き
略。
Conventions of an RTF Reader
ページ8
書式(Formal Syntax)
#PCDATAとか。
A+とか。
A|Bとか。
略。
またのお越しをお待ちしております