cbgreek ver.2.0c のバグ対策(Babel関連)

名前: 栗山雅俊
日時: 2003-11-19 23:32:49
IPアドレス: 220.219.222.*

>>23587 >>23588 >>23598 皆様、こんにちは。 前回稲垣さん、永田先生よりご教示いただいたバグ対策の続きになります。 cbgreekの現在のバージョンで"α"に下書きのイオタ(iota subscript)と 気息記号またはアクセントを併用するとイオタがずれて出力されてしまう 問題ですが、cblig.mfの当該箇所(121-131行)のコメントを外すだけでは どうも不十分のようです。たとえば私の環境では ------------------------------------ ! Character code 128 is already in a ligtable. <to be read again> : l.133 ligtable oct"200": "|" =: oct"204"; ------------------------------------ というようなエラーが出ます。そこでいくつか試したところ、どうやら ver.2.0cで追加になったサンセリフ体のカーニング処理についての記述 にバグがあるらしいことがわかりました。追加になっている記述はサン セリフ体とそれ以外で場合分けになっていて、 (cblig.mfの93-118行目) ------------------------------------ if not SansSerif: ligtable "a": "|" =: oct"370"; else: ligtable "a": "|" =: oct"370", skipto 1; ligtable oct"200": "|" =: oct"204", skipto 1; ligtable oct"201": "|" =: oct"205", skipto 1; ligtable oct"202": "|" =: oct"206", skipto 1; ligtable oct"203": "|" =: oct"207", skipto 1; ligtable oct"210": "|" =: oct"214", skipto 1; ligtable oct"211": "|" =: oct"215", skipto 1; ligtable oct"212": "|" =: oct"216", skipto 1; ligtable oct"213": "|" =: oct"217", skipto 1; ligtable oct"220": "|" =: oct"224", skipto 1; ligtable oct"221": "|" =: oct"225", skipto 1; ligtable oct"222": "|" =: oct"226", skipto 1; ligtable oct"204": oct"205": oct"206": oct"207": oct"214": oct"215": oct"216": oct"217": oct"224": oct"225": oct"226": oct"370": 1:: "n" kern-.8u#, "f" kern-.5u#, "s" kern-.5u#, "p" kern-.8u#, if not SansSerif:"t" kern-.8u#,fi "u" kern-.8u#, oct"314" kern-.8u#, oct"324" kern-.8u#, oct"334" kern-.8u#, oct"316" kern-.8u#, oct"325" kern-.8u#, oct"326" kern-.8u#, oct"327" kern-.8u#, oct"334" kern-.8u#, oct"335" kern-.8u#, oct"336" kern-.8u#; fi ------------------------------------ となっています。 not SanSerif以下には1行しか記述がないことがわかります。つまり サンセリフ以外ではイオタ・サブスクリプトと気息記号、アクセントを 併用した場合の記述が存在しないように見えます。そこで、以下のように 変更してみました(%add がついている行を追加)。 ------------------------------------ if not SansSerif: ligtable "a": "|" =: oct"370"; ligtable oct"200": "|" =: oct"204"; %add 2003.11.18 ligtable oct"201": "|" =: oct"205"; %add 2003.11.18 ligtable oct"202": "|" =: oct"206"; %add 2003.11.18 ligtable oct"203": "|" =: oct"207"; %add 2003.11.18 ligtable oct"210": "|" =: oct"214"; %add 2003.11.18 ligtable oct"211": "|" =: oct"215"; %add 2003.11.18 ligtable oct"212": "|" =: oct"216"; %add 2003.11.18 ligtable oct"213": "|" =: oct"217"; %add 2003.11.18 ligtable oct"220": "|" =: oct"224"; %add 2003.11.18 ligtable oct"221": "|" =: oct"225"; %add 2003.11.18 ligtable oct"222": "|" =: oct"226"; %add 2003.11.18 else: ligtable "a": "|" =: oct"370", skipto 1; ligtable oct"200": "|" =: oct"204", skipto 1;  (以下変更なし) ------------------------------------ これでとりあえずエラーがなくコンパイルできるようになりました。 Roman、Bold、Italic、SanSerif、Typewriter体でそれぞれ正常に出力 できるようです。 注意すべき点は、以下になります。 (1)CTAN所収のtfmファイルは使わない (2)古いcbgreekのtfmファイルとPKファイルはすべて削除する まだ気がつかない問題があるかも知れません。ギリシャ語環境をお持ちの 方がいらっしゃいましたら、検証いただければ幸いです。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)