-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DirectWriteで描画したい #262
Comments
https://gist.github.com/3806748 作ってみた。フォントはRictyの9pt固定でenc=utf-8の時しか動作しない。とりあえず描画をみる目的。いろいろオカシイところは多いがとりあえずの作。 結果できたのはこんなもの。 上がパッチによるDirectDrawで、下は素のGDI。かなり良くなったと思うがどうだろう。 |
おお、すごい。いいですね。 |
これの最新版は 試してみたところ、いくつか問題があったので追加パッチを作りました。
フォントサイズによっては、文字幅の計算に誤差が出ているようで、表示位置がずれたり表示されない文字があったりします。 |
Thanks! |
@k-takata マージしました。ありがとうございます。 ところで ちなみに私のビルドではnmake実行時に明示的に指定しています。 0x0600より小さかったら#pragma errorとかで で、そのあたりMinGWについて検討してもらえると助かります。 |
…自分で書いておいてなんだけど、ちゃんとguifontに追従するようになってたんだ…忘れてた。 |
これなんですが 1.5 の倍数のサイズを指定するとうまくいくかも。 |
VCでビルドしたときも(無指定だったので)エラーになっていたので入れたのですが、そういうことでしたら |
DirectWrite対応したVimをぜひ使ってみたいので、私も試してみようかなと思っています。 |
あとでexeだけどっかに上げますよ。 |
http://www.kaoriya.net/blog/2013/01/11 で案内しているようにとりあえず現状版をビルド&公開しました。 安定させてくれた @k-takata さんのおかげです。ありがとうございます! |
ありがとうございます。試してみたら感想を書き込みます。安定して動作するなら、ぜひ本家にパッチを送りたいですね。 |
せっかくビルドしていただいたところで申し訳ありませんが、追加パッチですw
欧文フォントに日本語フォントをフォントリンクした場合に表示がずれることがあるようです。 |
動作が安定するようになれば、残課題は以下のようなところでしょうか。
あと、Vimのコーディングスタイルに合わせるために、 |
set guifont=Ricty_Diminished:h11 がまだずれてる。 |
|
@k-takata Thanks! フォントは小数点以下の誤差が蓄積するんだと思われます。1.5ptの倍数だとその誤差が生じない。 |
@k-takata とりこみました。 https://bitbucket.org/koron/vim-kaoriya-vim-mq-ex/commits/5107000e9a7e82cadd3330389dccbb90 以下2点修正の上:
|
|
|
feature 化はMSVC だけやったんで MinGWとCygwinの対応はお願いします。 m(_ _)m |
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -311,7 +311,7 @@
DIRECTX_DEFS = -DUSE_DIRECT_X
DIRECTX_INCL = gui_dwrite.h
DIRECTX_LIB = d2d1.lib dwrite.lib
-DIREXTX_OBJ = $(OUTDIR)\gui_dwrite.obj
+DIRECTX_OBJ = $(OUTDIR)\gui_dwrite.obj
!endif
!endif
@@ -650,7 +650,7 @@
!if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes"
CFLAGS = $(CFLAGS) $(DIRECTX_DEFS)
GUI_INCL = $(GUI_INCL) $(DIRECTX_INCL)
-GUI_OBJ = $(GUI_OBJ) $(DIREXTX_OBJ)
+GUI_OBJ = $(GUI_OBJ) $(DIRECTX_OBJ)
GUI_LIB = $(DIRECTX_LIB) $(GUI_LIB)
!endif
|
typo の件と、:versionで表示される内容の件、及びhas()の対応をしときました。 マクロ名は USE_DIRECT_X のままです。こんなのは最後に変えれば良いので。 |
Make_ming.mak, Make_cyg.mak を更新しました。 なお、Cygwin上でも mingw64-i686-gcc-g++ パッケージをインストールすれば、 $ make -f Make_ming.mak CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ DIRECTX=yes でビルドできることに数日前に気づいて、Make_cyg.makの存在意義に大いに疑問を感じているところです。 |
Kaoriyaさんところで配布されているバイナリで試してみました。 |
Direct Writeに対応している秀丸エディタは、かなり細かく表示を調整できるみたいなので http://hide.maruo.co.jp/software/hidemaru810/index.html これくらい調整できると素晴らしいと思います。 こういう情報もありますね。 |
CreateRenderingParams() を CreateCustomRenderingParams() に変えれば調整できるようです。 自分の環境だと、デフォルト値は以下のようになっていました。 |
そのデフォルト値って、コントロールパネルで指定できるClearTypeの設定でセットされるんですかね? |
そんな設定があったんですね。知りませんでした。 |
@kyouryuukunn 既知です。描画範囲の都合で回避方法がないと考えられますが… @k-takata どうですかね。なにかアイデアありますか? |
関係ないけど、RenderingParamsをオプション経由で取得したり設定したりしたい。 簡単なのは |
斜体が欠けるのはDWだけでなくGDIでも起きていますね。
その際は、ソースのヘッダコメントを付けておいた方がよいかと。 |
kwsk |
単にこれのことです。(何というのが正しいのか知りませんが。)
|
OK把握。 でもそれはBramが最後に(リリースするときに)付けたほうが良い、かも。 |
とあるクラスがMSのサンプルの丸パクリ+独自修正かな。 まぁ、Authorは書いとくか。 |
それよかオプションのパースに使える共通関数が少なくて泣ける。 |
patch-direct_write-ex1.diff で、DirectWriteをONにするオプションを変えました。 オンにするには次のようにします:
オフにするにはこうしてください:
レンダリングパラメータを設定することもできるようにしました:
設定可能なパラメータは以下のとおりです:
各パラメータの意味詳細は この辺 を見てください。 |
明朝にでもバイナリ作って試験公開してみます。 |
一瞬明朝フォントかと思った。 |
@thinca かかったな! w |
なんという罠! |
ヒャッハー! 我慢できねぇ! |
gui_mch_set_rendering_options の宣言は .pro に移した方が良いのでは? |
@k-takata Thanks! でもそれは「最終的に本家でマージする時のタスク」として放置します。 そもそも今の場所にあの関数が書いてある事自体、順序的にはよろしくないでしょう。 |
最新版のバイナリを試してみました。初期状態だと微妙ですが、レンダリングオプションを変更することで、かなり良い感じになることを確認しました。これなら、私もデフォルトで使用するかもしれません。 |
option.c から あと、gui_mch_set_rendering_options() の中のコメントが Dire x tWrite になっています。 |
7.3.821, 823 で patch-direct_write.diff にコンフリクトが発生するようになったので修正しました。 |
patch-direct_write-ex1.diff に 'renopt' のドキュメントが含まれていなかったので書きました。3つ上の修正パッチもマージ済みです。 |
本件は |
#337 にて仕上げ作業に入るので、本スレは閉じます。 |
GDIで描画している場合、最近の(ビットマップを含まない)TTFを小サイズで表示するとヒドイことになる。
DirectWriteならばそれを回避できるのではないか?
課題
enc=utf-8以外の対応→ ドロップ予定featureでon/offできるようにoptionでon/offできるようにXP等でも起動できるように動的ロードドキュメント太字と斜体がでないguifontwide への対応追加課題
オプション名を変えたい。antialiasはちょっと不自然だし、分離したい。→directx
にしたVim本体からみた発動条件を揃えたい。いまは p_antialias と s_dwc の両方を見ているところと、前者しか見ていないところが混在している。メンテを考えると好ましくない。→IS_ENABLE_DIRECTX()
マクロに集約したThe text was updated successfully, but these errors were encountered: