0

CGM(またはインタラクティブWebCGM)ファイルを直接書き込むコードがあります。すべてのCGMプリミティブを完全に制御し、必要に応じてバージョン1、3、または4のファイルを生成できます。一般に、私たちが作成するCGMは、さまざまな業界標準のレンダラー(MetaWeb、SDI、ISoViewなど)で完全にレンダリングします。これらのレンダラーを使用すると、問題なく拡大縮小、パン、ズームできます。

残念ながら、エンドユーザーが同じファイルをFramemaker(バージョン10)にインポートすると問題が発生します。初期インポート後のCGMファイルの表示は正しいです。ただし、ユーザーがページ内のCGMダイアグラムを拡大または縮小することを選択した場合、次のことがわかります。

  • 1)縮小時-テキストフォントが(予想どおりに)比例して縮小されるだけでなく、文字間隔(CGMクラス5、要素13)および文字拡張係数(クラス5、要素12)も縮小されます。全体的に、テキストは水平方向の方向に比例して縮小します

    2)拡張時(テキストフォント、文字間隔、文字拡張係数の3つすべてが増加)、元々グラフィックボックス内に閉じ込められていたテキストが、右側の余白を大幅に超えて拡張されるようになりました。

これはFramemakerのバグのようです。ただし、エンドユーザーには、正しくスケーリングされるサードパーティによって生成されたファイルもあります。これらのファイルの機能をコピーしました-特に設定:

version to: '1'
scaling mode to: ABSTRACT   
scale to 0   
using Text(class 4, element 4) in place of Restricted Text (class 4, element 5).

また、文字間隔と文字拡張係数(つまり、1、0、0.01)のさまざまな値を試しましたが、成功しませんでした。不思議なことに、これらの要素の両方について、元のファイルには、16進数0x00 0x000x000x40である値「9.0E-44」が含まれています。これは「秘密のフラグ値」のように見えますが、私たち自身のファイルでそれを使用しても効果がないようです。

このフラグ値の重要性とその使用方法を知っている人はいますか?

4

2 に答える 2

1

私たちは実際にこの問題を解決することができました。FrameMakerのインポートは非​​常に具体的であり、CHARACTEREXPANSIONFACTORとCHARACTERSPACINGに特定のハードコードされた値が必要なようです。

以前私が見逃したのは、REALPRECISIONが[0][9] [23]に設定されていなかったことです。これは、よく知られているIEEE浮動小数点形式をサポートするためですが、[1][16][16]に設定されています。古語の「固定小数点」の小数点形式。たぶん、値Hex 0x00 0x000x000x40。このエンコーディングではもう少し意味があります(もちろん、それでも秘密のフラグ値です!)

これを実行すると、ファイルはFrameMakerに正常にインポートされ、展開または縮小されると、テキストは他のレンダラーとまったく同じように動作しました。

REALPRECISIONを[0][9][23]に戻した場合、IEEE値として再表示されたときに、「0x00 0x00 0x00 0x40」が引き続き機能するかどうかを確認するために、実験を行っていません。このFrameMakerのバグを回避する方法を見つけて、とても安心しました。

于 2011-11-14T12:51:10.070 に答える
0

仕様にはシークレットフラグ値はありません。ISO8632-3仕様では、CHARACTEREXPANSIONFACTORとCHARACTERSPACINGの両方が実際の値であると記載されています。表示されているHEX値は、値がほぼゼロであることを意味します。

CHARACTER SPACING値がゼロに近いことは理にかなっていますが(仕様から):

文字間隔:文字列内の文字間に追加される空白の量を決定します。

キャラクター拡張ファクターには当てはまりません。

文字拡張係数は、フォント設計者が指定した比率からの文字の幅と高さの比率の偏差を指定します。

仕様の付録Dには、拡張のゼロ値を処理する方法が実際には記載されていないため、パーサーごとにケースの処理方法が異なる場合があります。

于 2011-11-10T10:51:38.830 に答える