3 返信 最新の回答 日時: Feb 28, 2005 5:15 PM ユーザー:(koma)

    内部コードに変換する方法しりませんか?

      英語版WindowsXP上で、英語版FrameMakerで、
      独自のルーチンで、Ansi のText ファイルを読み込んで、
      F_ApiAddText() を使って Document に文字を入力すると、
      ウムラウトのある文字が化けるのですが、
      恐らく、内部コードに変換して表示する必要があると思うのですが、
      どうやったらいいのでしょう?

      ANSI String を s にいれて、エンコーディングを指定してコピー
      したものを F_ApiAddText しても状況がかわりませんでした。

      FontEncIdT feId = F_FontEncId((ConStringT) "FrameRoman" );
      ...
      F_StrCpyNEnc( s2, s, 512, feId );
      ...

      ちなみにに使ってるのは ISO Latin 1 の範囲の文字です。
        • 1. Re: 内部コードに変換する方法しりませんか?
          Level 1
          FrameMaker の内部キャラクターコードを解析して
          ISO-Latin-1 から FM内部コード変換テーブルを作成してみたのですが、
          変換できない文字コードがいくつか
          ありました。

          それはなんで変換できないんだろう?
          • 2. Re: 内部コードに変換する方法しりませんか?
            Level 1
            k-maru様。

            変換できない文字コードっていうのを具体的に提示するか、
            もう少し情報がないとレスは付かないと思いますよ…。

            変換できないっていうのは、
             ・結果が返ってこないのか
             ・期待する結果と違うのか
            のどちらですか?

            FrameMaker内部コードといっても、
            コードが同じでもフォントによって、異なる文字になったりしますよね?
            そんなのが影響してるんじゃないのかな?

            「FrameMaker の文字セット」のマニュアルあたりが参考になるのでは?と思います。
            • 3. Re: 内部コードに変換する方法しりませんか?
              Level 1
              いつもありがとうございます。 ymgcさま。
              ISO-Latin-1 の範囲は 128文字の範囲なので変換されかたを調べて変換テーブルを力技で作りました。でうまくいかないのが
              ISO-Latin-1 の 0x80 - 0xf5 へ変換してみましたが駄目でした。通貨記号は特殊な変換をしてるような気はします。
              0xA0 は コードページ(WIN32 GetACP())が異なる環境によって変わるような気がします。が7bitでいえば0x20 (つまり空白)に対応してるので実害はないのではないかと思われます。