◀Unicode版開発トップへ
  • 92 バグ修正:印刷で全角フォント指定が効かない
    • 102 Re:バグ修正:印刷で全角フォント指定が効かない
      • 103 Re2:バグ修正:印刷で全角フォント指定が効かない
        • 104 Re3:バグ修正:印刷で全角フォント指定が効かない
          • 105 Re4:バグ修正:印刷で全角フォント指定が効かない
            • 106 Re5:バグ修正:印刷で全角フォント指定が効かない
              • 107 Re6:バグ修正:印刷で全角フォント指定が効かない
                • 109 Re7:バグ修正:印刷で全角フォント指定が効かない
                  • 110 Re8:バグ修正:印刷で全角フォント指定が効かない
              • 108 Re6:バグ修正:印刷で全角フォント指定が効かない
  • [92] バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月12日 23:21

    バグ修正パッチを登録しました。
    PatchUnicode#1849347 印刷で全角フォント指定が効かない
    http://sourceforge.net/tracker/index.php?func=detail&aid=1849347&group_id=12488&atid=1013762
    • [102] Re:バグ修正:印刷で全角フォント指定が効かない Uchi 2007年12月15日 21:54

      ▼ kobakeさん
      > バグ修正パッチを登録しました。
      > PatchUnicode#1849347 印刷で全角フォント指定が効かない
      > http://sourceforge.net/tracker/index.php?func=detail&aid=1849347&group_id=12488&atid=1013762
      動作確認しました。
      Print_DrawLine関数でちょっと問題がちょっと問題があるようです。

      ::ExtTextOutW_AnyBuild(
      hdc,
      ptDraw.x + (Int)nLayoutX * nDx,
      ptDraw.y - ( m_pPrintSetting->m_nPrintFontHeight - nAscentHan ),
      0,
      NULL,
      &pLine[nBgnLogic],
      iLogic - nBgnLogic,
      &pDxArray[nBgnLogic]
      );
      の第3パラメータは
      ptDraw.y - ( m_pPrintSetting->m_nPrintFontHeight - nKindLast==0?nAscentHan:nAscentZen ),
      となると思います。

      以上報告をあげておきます。
      • [103] Re2:バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月15日 22:39

        ▼ Uchiさん
        > Print_DrawLine関数でちょっと問題がちょっと問題があるようです。
        >
        > ::ExtTextOutW_AnyBuild(
        > hdc,
        > ptDraw.x + (Int)nLayoutX * nDx,
        > ptDraw.y - ( m_pPrintSetting->m_nPrintFontHeight - nAscentHan ),
        > 0,
        > NULL,
        > &pLine[nBgnLogic],
        > iLogic - nBgnLogic,
        > &pDxArray[nBgnLogic]
        > );
        > の第3パラメータは
        > ptDraw.y - ( m_pPrintSetting->m_nPrintFontHeight - nKindLast==0?nAscentHan:nAscentZen ),
        > となると思います。

        ご指摘ありがとうございます。
        Y座標調整は見落としていました。orz
        修正を施したパッチを登録しました。
        PatchUnicode#1849347 - 071215_1_FixPrintFont2.patch
        • [104] Re3:バグ修正:印刷で全角フォント指定が効かない Uchi 2007年12月16日 12:21

          > 修正を施したパッチを登録しました。
          > PatchUnicode#1849347 - 071215_1_FixPrintFont2.patch
          動作確認しました。
          ()を忘れていました。どうもすみませんでした。

          機能的には問題ないのですが、気になった点をひとつ
          vDxArrayで事前に文字幅をとっているの様ですが、
          結局、後のループで半角判定しているので無駄ではないでしょうか?

          以上報告をあげておきます。
          • [105] Re4:バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月16日 13:01

            ▼ Uchiさん
            > > PatchUnicode#1849347 - 071215_1_FixPrintFont2.patch
            > 動作確認しました。

            ありがとうございます。

            > 機能的には問題ないのですが、気になった点をひとつ
            > vDxArrayで事前に文字幅をとっているの様ですが、
            > 結局、後のループで半角判定しているので無駄ではないでしょうか?

            そう、それはちょっと迷いました。
            既に取得済みの vDxArray を用いるかどうか。

            vDxArray には文字幅のリストが入っているので、
            要素の値が大きいか小さいかで全角/半角の判定はできます。
            ただ、この値の意味はあくまでも「ピクセル幅」であり「全角/半角の正否」では無いので、
            これを用いるのは文脈的に美しくないかなぁ、と思い、
            あえて WCODE::isHankaku を用いました
            (このリスト値を元に全角/半角の判定をしているコード箇所もありますけど)。

            なお、WCODE::isHankaku は今後もうちょっと最適化して、定数速度の処理にする予定です。

            あと、これはかなり可能性が薄いですけど、
            将来、プロポーショナルフォントに対応する (?) ことがあるとしたら、
            vDxArray から全角/半角の判定はできなくなるなぁ、という妄想も、
            今回の実装の根拠のひとつとしてありますw
            • [106] Re5:バグ修正:印刷で全角フォント指定が効かない Uchi 2007年12月16日 15:32

              > あと、これはかなり可能性が薄いですけど、
              > 将来、プロポーショナルフォントに対応する (?) ことがあるとしたら、
              > vDxArray から全角/半角の判定はできなくなるなぁ、という妄想も、
              > 今回の実装の根拠のひとつとしてありますw
              プロポーショナルフォント対応ということであればなおさら必要が無いのではないでしょうか?
              プロポーショナルフォントであれば、桁進めは、出力した文字列の幅をAPIで求め、インクリメントすべきです。
              (プロポーショナルフォントでは各文字の幅の合計と文字列の幅の合計が一致しません)
              まあコーディングしているわけでもないのに能書きをたれています。
              ひとつに意見として書かせていただきます。
              • [107] Re6:バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月16日 16:13

                ▼ Uchiさん
                > > あと、これはかなり可能性が薄いですけど、
                > > 将来、プロポーショナルフォントに対応する (?) ことがあるとしたら、
                > > vDxArray から全角/半角の判定はできなくなるなぁ、という妄想も、
                > > 今回の実装の根拠のひとつとしてありますw
                > プロポーショナルフォント対応ということであればなおさら必要が無いのではないでしょうか?
                > プロポーショナルフォントであれば、桁進めは、出力した文字列の幅をAPIで求め、インクリメントすべきです。
                > (プロポーショナルフォントでは各文字の幅の合計と文字列の幅の合計が一致しません)
                > まあコーディングしているわけでもないのに能書きをたれています。
                > ひとつに意見として書かせていただきます。

                もしかして、論点は vDxArray 自体が不要ではないか?という話でしょうか。
                ExtTextOut に文字幅配列を渡しているのは、
                ただサクラエディタのコーディング文化に倣っているだけで、
                その意図は意識していません。
                ここで文字幅配列を渡さない実装にするとしたら、他の ExtTextOut 呼び出し箇所も
                それに合わせて実装方針を変更する必要が出てくると思います。
                (描画ロジックが一部だけ異なるのは一貫性に問題があるので)
                • [109] Re7:バグ修正:印刷で全角フォント指定が効かない Uchi 2007年12月17日 13:08

                  > もしかして、論点は vDxArray 自体が不要ではないか?という話でしょうか。
                  > ExtTextOut に文字幅配列を渡しているのは、
                  > ただサクラエディタのコーディング文化に倣っているだけで、
                  > その意図は意識していません。
                  > ここで文字幅配列を渡さない実装にするとしたら、他の ExtTextOut 呼び出し箇所も
                  > それに合わせて実装方針を変更する必要が出てくると思います。
                  > (描画ロジックが一部だけ異なるのは一貫性に問題があるので)
                  その通りです。
                  vDxArrayが必要ないように思えた為のコメントです。
                  全角/半角のフォントを切り替えた時点で一貫性と言うのは意味が薄くなっているとは思いますが、
                  描画ロジックの一貫性であれば仕方が無いのかな、とも思います。
                  • [110] Re8:バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月18日 04:09

                    ▼ Uchiさん
                    > > もしかして、論点は vDxArray 自体が不要ではないか?という話でしょうか。
                    > > ExtTextOut に文字幅配列を渡しているのは、
                    > > ただサクラエディタのコーディング文化に倣っているだけで、
                    > > その意図は意識していません。
                    > > ここで文字幅配列を渡さない実装にするとしたら、他の ExtTextOut 呼び出し箇所も
                    > > それに合わせて実装方針を変更する必要が出てくると思います。
                    > > (描画ロジックが一部だけ異なるのは一貫性に問題があるので)
                    > その通りです。
                    > vDxArrayが必要ないように思えた為のコメントです。
                    > 全角/半角のフォントを切り替えた時点で一貫性と言うのは意味が薄くなっているとは思いますが、
                    > 描画ロジックの一貫性であれば仕方が無いのかな、とも思います。

                    文字間隔をすべてアプリ側で制御するのがサクラエディタの設計思想っぽかったので、
                    それは崩さないようにしています。
                    将来、その方針が変更されることはあるかもしれませんが、
                    兎にも角にもそれはまだ今では無いと思っています。
              • [108] Re6:バグ修正:印刷で全角フォント指定が効かない kobake 2007年12月16日 16:16

                補足ですが、ちょっと言葉を間違えていました。
                vDxArray は文字幅配列ではなく、文字間隔配列、でした。