テキストエディター「Mery」ベータ版 Ver 3.3.9 を公開

テキストエディター「Mery」ベータ版 Ver 3.3.9 を公開

アップグレードに必要なシステム要件が厳しすぎて新しめの PC でも動かない可能性があるということで問題になっている Windows 11。

私が所有している PC は Core™2 Duo 世代のものばかりなので Windows 11 へのアップグレードは絶望的。今後、Mery の Windows 11 対応をどうするか、非常に悩ましいところです。

ZOOM ズーム フィールドレコーダー 2チャンネル入力32bitフロート録音 2022年発売 F3 黒

ZOOM ズーム フィールドレコーダー 2チャンネル入力32bitフロート録音 2022年発売 F3 黒
ZOOM(ズーム)
手のひらサイズでプロの音。何とかして手に入れたい、録音機材の決定版!
Amazon で探す 楽天市場で探す

スポンサーリンク

Windows 11 を使ってみる

そんな状況ではありますが、Windows 11 の Insider Preview (テスト版) はシステム要件が緩いということで、これを使って Mery の動作を検証してみました。

Windows 11 を使ってみる 1

さて、Windows 11 の UI ですが、雑に言うと macOS っぽくなった感じがします。エクスプローラーやアイコンのデザインはちょっとオシャレになっており、個人的には割と好みです。

ただ、macOS のようにタスクバーのアイコンを中央に配置するのは構いませんが、スタートボタンまで中央に寄せるのは好ましくないと思いました。

長年の Windows ユーザーは無意識のうちにマウスを左下に持っていってしまいますが、そこにスタートボタンはありません。

また、アプリを起動してタスクバーにアイコンが増えてくると、スタートボタンはどんどん左に移動していき、気づいたときにはもうそこにありません。

Windows 11 を使ってみる 2

もちろん、設定で従来の Windows のような配置にすることもできるので、それほど大きな問題というわけではありません。

Mery はと言うと、こちらは問題ありです。

Windows 11 ではスクロールバーの仕様が変わって、線のように細くなってしまいました。マウスポインターを乗せると少しだけ太くなるのですがそれにしても細すぎます。

Windows 11 を使ってみる 3

上の画像の [スクロールバーを常に表示する] という項目を [オン] にすれば常に少しだけ太い状態になるのですが、Win32 アプリにはこの設定が効かないようです。

Windows 11 を使ってみる 4

従来の Mery では [検索] コマンドを実行したときにスクロールバーマーカーによって細いスクロールバーが隠れてしまいました。おまけにスクロールバーの上下ボタンは表示すらされません。

ダークモードにおける独自描画の部分もだめです。[オプション] ダイアログのスピンエディットの上下ボタンも表示されません。

Windows 11 を使ってみる 5

チェックボックスの色なんてオレンジ色になってしまっています。

Windows 11 を使ってみる 6

しかしながら、ダークモードの非公開 API がそのまま使えているのは不幸中の幸いでした。

なお、2021年9月17日現在、Windows 11 の正式版はまだリリースされておらず、アプリケーションマニフェストに記述する supportedOS の Id (アプリの構成ファイルに記述する、対応 OS の識別子のようなもの) も発表されていない状態です。

Windows 11 は Windows 10 の単なるリネーム品で、OS としては 10 と同じというウワサもあるようなので、supportedOS の Id も 10 のままだったりするのかもしれませんが…。

そういうわけで、本バージョンは Windows 11 への正式対応とまではいきませんが、問題が発生しそうな箇所に対策を行いました。

2021年12月24日 追記

アプリケーションマニフェストですが、Windows 11 における supportedOS の GUID が正式に発表されており、やはり Windows 10 と同じでした。

外部 アプリケーションマニフェスト - Win32 apps

supportedOS の GUID はそのままということで Mery 側での対応は不要、また、Windows 11 正式版でも動作確認が取れたので Windows 11 を対応 OS に追加しました。

Fluent UI System Icons を実装してみる

Mery のツールバーアイコンは Glyfz というサイトで購入した Glyfz Office 2010 Ribbon Bar Icons というアイコン素材を使っています。

外部 Ribbon bar icons, toolbar icons | Glyfz

Office 2010 風ということでデザインが古臭いのは否めませんが、それはさておき、ダークモードの場合に視認性が低いという問題がありました。

Glyfz Office 2019 には別売りでダークモード用のアイコンも用意されているのですが、これらを購入するためには多額の費用がかかります。

そこで、Microsoft が MIT ライセンスのオープンソースで公開している UI デザインに適したアイコン素材、Fluent UI System Icons を使ってダークモード用のアイコンを実装してみました。

外部 microsoft/fluentui-system-icons: Fluent System Icons are a collection of familiar, friendly and modern icons from Microsoft.

Google のマテリアルアイコンと比べるとデザインに一貫性がなかったり、素材の品質がまちまちだったりしますが、視認性はなかなか良いのではないでしょうか。

Fluent UI System Icons を実装してみる

ちなみに、ライトモードのときは従来どおりです。

ライトモードのときのツールバーアイコンのデザインを変更したいかたや Microsoft のデザインが苦手なかたはモダンな外観と高い視認性でオシャレなマテリアルアイコンはいかがでしょうか。

テキストエディター「Mery」 - BOOTH

外部 テキストエディター「Mery」 - BOOTH

本バージョンからの機能として、マテリアルアイコンを適用するときにmymeryres.dllという名前で Mery.exe と同じフォルダーに配置することでも適用できるようになりました。

mymeryres.dllとして配置しておけば Mery の本体をアップデートするときに上書きされなくなります。なお、本体のアップデートで meryres.dll の更新が伴う場合も上書きされないのでご注意ください。

PlemolJP を使ってみる

いまやプログラミングの世界では標準になりつつあるフォント、HackGen (白源) の作者様が新たに製作されたフォント、その名も PlemolJP (プレモル ジェイピー) を使ってみました。

PlemolJP は IBM がオープンソースで公開しているフォント、IBM Plex Sans JP をベースに作られており、日本語の視認性の高さはもちろんのこと、プログラマーさんに優しい判読性と、物書きさんに優しい可読性を兼ねそろえた実用的でオシャレなフォントです。

PlemolJP を使ってみる 1

PlemolJP の特長のひとつに豊富なウエイトがあります。全 8 種類ということで、画面の明るさや背景の暗さに合わせて柔軟に文字の太さを調節することができます。

ウエイトによって印象が大きく変わるもので、例えば Thin (極細) ウエイトはモダンで洗練された印象のクールなフォントとなっています。

…が、ここで問題が発生しました。

フォーラム IBM Plex Sans JP で ExtraLight, Thin ウェイトを使うと Bold ウェイトになる

Mery の開発環境である Delphi には仕様上、フォントのウエイトの概念が [標準] と [太字] しか存在しないようで、当然、Mery もその制約を受けていました。

これは Mery に限らず、Delphi 製のアプリケーションはもちろん、Windows 標準のワードパッドなどでも同様、Thin を選択しても本来の細さで描画できないことがあるようです。

今回は PlemolJP の作者様にお力添えをいただき、フォントまわりの描画の仕組みを大幅に改善しまして、Thin もこのとおり、きちんと描画できるようになりました。

PlemolJP を使ってみる 2

PlemolJP の見やすさと、作者様の細部にまでのこだわりは創作意欲を掻き立ててくれること間違いなし。それでは、早速、新しい Mery を使って PlemolJP 本来の美しい文字を存分にお楽しみくださいませ。

外部 あの IBM が作ったオープンソース日本語フォントを使い、プログラミングフォント『PlemolJP』を作ってみた - Qiita

等幅半角字形に対応してみる

フォントの OpenType 機能のひとつ、等幅半角字形を実装してみました。

等幅半角字形というのはプロポーショナルな字形を等幅半角の字形に置き換えることができる機能で、DTP 系のソフトなどに搭載されている機能のひとつです。

例えば、メイリオはプロポーショナルフォントなので半角英数字は等幅ではありませんが、等幅半角字形を使うことで等幅で描画できるようになるというわけです。

メイリオ [通常]

メイリオは以下のように日本語は等幅ですが半角英数字は等幅ではありません。

メイリオ (通常)

メイリオ [等幅半角字形を有効にする]

等幅半角字形を有効にすると、このとおり半角英数字が等幅になります。

メイリオ (等幅半角字形を有効にする)

メイリオなのに半角英数字の幅がきちんとそろうので、コーディングなどの用途にも使えるようになります。

IBM Plex Sans JP [通常]

先ほどご紹介した PlemolJP は等幅フォントですが、そのベースとなっている IBM Plex Sans JP はプロポーショナルフォントなので半角英数字の文字幅はまちまちです。

IBM Plex Sans JP (通常)

IBM Plex Sans JP [等幅半角字形を有効にする]

等幅半角字形を有効にすると、このとおり半角英数字が等幅になるだけでなく、0 なんてコーディングに使ってくださいと言わんばかりの斜線付きゼロになってくれます。

IBM Plex Sans JP (等幅半角字形を有効にする)

等幅半角字形を有効にする

等幅半角字形を有効にするには、DirectWrite という機能をオンにする必要があります。とは言っても、設定が難しいわけではないのでご安心ください。

DirectWrite をオンにすると、従来よりも美しい文字の描画ができるようになったり、カラー絵文字に対応したり、合字のオン・オフを切り替えたりすることができるようになったりもします。

Mery ではスペックの低いパソコンにも対応するため、初期設定では DIrectWrite がオフになっていますが、Windows 7 以降の比較的新しい?パソコンをお使いのかたはオンにしてみてくださいね。

Mery の [ツール] メニューから [オプション] を選択し、オプションダイアログの [DirectWrite] カテゴリを選択します。

その中にある [DirectWrite を有効にする] をオンにします。続いて [等幅半角字形を有効にする] をオンにして [OK] ボタンでオプションダイアログを閉じれば完了です。

すべてのフォントが等幅半角字形に対応しているというわけではありませんが、今回ご紹介したメイリオ、IBM Plex Sans JP の他、游ゴシック、游明朝も等幅半角字形に対応しているようです。

もともとこれらのフォントはプロポーショナルフォントですから、全角文字が等幅とは限りませんが、半角英数字が等幅になることでコーディングなどの用途に使えるフォントの選択の幅が広がるのではないでしょうか。

フォントによっては半角英数字以外にも等幅半角字形が用意されているものもありますが、Mery では等幅半角字形を適用する範囲を ASCII コードの 0x20 から 0x7E としています。仕様上の制限事項ということでご了承ください。

OpenType 機能に対応してみる

OpenType 機能はフォントの外観や振る舞いを変更できる拡張機能のようなもので、上記の等幅半角字形 (hwid) は OpenType 機能のひとつにすぎません。

次のスクリーンショットは IBM Plex Sans JP ですが、OpenType 機能を使用してデザインのバリエーションを切り替えてみるとこのようになります。

OpenType 機能に対応してみる

a、g、0 のデザインが切り替わっているのがお分かりいただけたでしょうか。4 文字の OpenType 機能タグを組み合わせて指定することで、様々な OpenType 機能を有効にできます。

OpenType 機能を有効にする

Mery の [ツール] メニューから [オプション] を選択し、オプションダイアログの [DirectWrite] カテゴリを選択して [詳細] ボタンをクリックします。

DirectWrite の OpenType 機能を使えるようにしてみた 1

ダイアログが表示されるので、有効にしたい OpenType 機能タグを入力します。

例えば、"zero"を入力すると数字の 0 がスラッシュ付きになったり、"salt"を入力するとデザインのバリエーションが切り替わったりします。

DirectWrite の OpenType 機能を使えるようにしてみた 2

ちなみに、[サンプル] の文字列はダブルクリックすることで Aaあぁアァ亜宇ij = I::oO(0xB81l); を切り替えることができます。

salt 機能で複数のデザインのバリエーションが存在する場合などは"salt" 2のようにインデックスを指定することもできます。

インデックスを省略した場合は 1 を指定したのと同じです。また、"liga" 0のように 0 を指定することで機能を無効にすることもできます。

これらの機能は複数を組み合わせることもでき、その場合は"zero", "salt" 2, "liga" 0のようにカンマ区切りで入力します。

OpenType 機能の詳細は以下のドキュメントをご確認ください。

外部 Registered features (OpenType 1.9) - Typography | Microsoft Docs

OpenType 機能の構文 (font-feature-settings) やフォントの特性については以下のサイトの解説が分かりやすいと思います。

外部 CSS での OpenType 機能の構文

外部 OpenType フォント特性の手引き - CSS: カスケーディングスタイルシート | MDN

OpenType 機能に対応しているフォントはまだそれほど多くありませんが、IBM Plex Sans JP、FiraCode などはいくつかの OpenType 機能に対応しているようです。

外部 How to enable stylistic sets · tonsky/FiraCode Wiki

今回は試験的な実装ということで [OpenType 機能] の設定を DirectWrite のオプションとして配置しましたが、OpenType 機能のさらに先、可変フォント (Variable Fonts) のカスタム軸の操作を実装するのであれば [フォントの設定] ダイアログに配置したほうが理にかなっていそうですね。

仕様上の制限事項

[合字を有効にする] は"liga", "clig", "calt"を一括で切り替えるオプション、[等幅半角字形を有効にする] は"hwid"を英数字のみに適用するオプションとなっており、これらの機能を使用するためにユーザーさんは OpenType の書式を知る必要はありません。

[OpenType 機能] は [合字を有効にする]、[等幅半角字形を有効にする] オプションを上書きするかたちで適用されます。

テキストエディターというアプリの性質上、DTP アプリのように [OpenType 機能] を部分的に適用することはできないため、例えば、[OpenType 機能] に"hwid"を入力して等幅半角字形を指定した場合、それが必ずしも英数字のみに適用されるとは限りません。

また、等幅半角字形"hwid"にデザインのバリエーション"salt"が用意されていなかったり、スラッシュ付きゼロ"zero"がドット付きゼロだったり、思ったとおりの結果が得られないこともあると思いますが、OpenType 機能の効果はフォントの仕様次第です。

変更ログ

本バージョンではいくつかの不具合修正や機能改善が含まれています。現在お使いのバージョンで問題がある場合はバージョンアップで改善されるかもしれません。

3.3.9 (2022-09-18)

  • 縦書きで等幅半角字形に対応

    DirectWrite のバグかと思ったらこっそりと IDWriteTextLayout2 に縦書き用の空白を含む文字の高さを取得する機能が用意されていました。

    フォーラム 縦書きにしたときに行頭にスペースが置けません…

    フォーラム リモートデスクトップで縦書きにすると空白が表示されない

  • 縦書きで絵文字を描画するときの高さをきちんと計算するようにした

    縦書きで絵文字をきちんと扱えるアプリは少ないようなので正解はわかりませんが、この修正により Word の描画に近づきました。

  • コマンドラインオプションなしで引数のファイルがひとつの場合、パスを「"」で囲まなくても開けるようにした

    ファイル名が"a b.txt"のように半角スペースを含むファイル名の場合、Mery.exe a b.txtのような書き方でも開けるようになりました。

    フォーラム ファイル名に半角スペースがあると他のエディタから呼び出せない

  • メモ帳の置き換え (/z) の引数で複数のファイルパスに対応

    メモ帳ではできませんが、notepad a.txt b.txtのような書き方で複数のファイルを開けるようになりました。

  • [外部ツールの設定] のチェックボックスでメインメニューと外部ツールバーへの表示/非表示を切り替えられるようにした

    UI 的に「何のチェックボックスだろう?」と思われそうですが、Mery のユーザーさんなら察してくれますよね?

    フォーラム 外部ツールバーボタンについて

  • [行番号 (変更行)] と [行番号 (選択行)] を [透明] にしたときのサンプルの見え方を修正
  • [タイプライタースクロール] のショートカットキーの初期値 Ctrl+Tを廃止

    Ctrl+Tに割り当てていましたが、誤って押してしまうことがあるようなので廃止しました。

    フォーラム タイプライタースクロールを無効にしたい

    フォーラム 「タイプライタースクロールを有効にする」設定がONに戻ってしまう

  • [全画面表示] と [Zen モード] を実行したときに終了方法のヒントを表示するようにした

    Zen モードの終了の仕方がわからないとのご意見をいただいたのでヒントを表示するようにしました。

  • Hunspell を 1.7.1 に更新
  • 結合文字と絵文字を Unicode 15.0 に更新

    Emoji 15.0 は Windows (Segoe UI Emoji フォント) が対応すれば描画できるようになります。

  • その他、細かい修正

3.3.8 (2022-07-23)

  • Windows 11 Insider Preview の特定のビルドで半角/全角キーを押すとフリーズする問題の対策

    Insider Preview の特定のビルドと新しい IME の組み合わせで発生する問題です。Delphi 10.4.2 と Delphi 11 で VCL を使った単純なフォームだけのプログラムでも問題が発生することを確認しました。

    Delphi の開発元であるエンバカデロでは新しい IME の問題は Windows OS および IME の修正によって対処すべきとの意向だそうですが、試しに Mery 側で対策を施してみました。

    フォーラム IMEのバージョンによっては日本語入力で落ちる?

    フォーラム [半角/全角]キーを押すとクラッシュする

  • Per-Monitor DPI で特定の条件下でアウトラインプラグインがフリーズする問題の対策

    Windows 10 の Per-Monitor DPI で TreeView コントロールを使用した場合に発生する問題で、Windows の不具合である可能性が高いです。Windows のエクスプローラーや Eclipse のアウトラインビューでも同様の問題が確認されています。

    フォーラム アウトラインが原因でMeryがフリーズします

  • [無題] のタブを [書き換え禁止] にしてワークスペースを復元するとエラーが発生していたのを修正

    [無題] で内容が空の状態かつ未保存のタブを [書き換え禁止] に設定してワークスペースを復元するとエラーが表示されていたのを修正しました。

  • その他、細かい修正

3.3.7 (2022-06-25)

  • 鬼車を 6.9.8 に更新

    USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGEをオフのハックも適用済みですが動作検証はあまりできていません。

  • [検索する文字列] と [置換後の文字列] の履歴で大文字小文字を区別するようにした

    そのほうが便利ですよね。

  • ウィンドウにドラッグアンドドロップしたときに CF_UNICODETEXT よりも CF_HDROP を優先するようにした

    Firefox のダウンロードファイルのリストからドラッグアンドドロップできるようになりました。

    フォーラム FirefoxからのD&D

  • ウィンドウを分離したときにツールバープラグインの位置をできるだけ保持するようにした
  • [論理行で表示] のときに行番号の幅が表示行で計算されていたのを修正
  • ファイルの変更をチェックするときに微小の誤差を無視するようにした

    Google ドライブにおけるファイルの変更チェックの問題が改善されるかもしれませんし、されないかもしれません。

    フォーラム 外部でファイルが~

  • [単語左削除] のショートカットキーの初期値を Ctrl + BkSp にした

    メモ帳の仕様に合わせてみました。アップデートの場合、既存のキーボード割り当ての設定は上書きされません。

    フォーラム Ctrl+Backspaceの挙動

  • [編集モード] に [TypeScript] を追加

    アップデートの場合は必要に応じて手動で [TypeScript] の項目を追加してください。

  • 仮想デスクトップに対応

    現在の仮想デスクトップに Mery のウィンドウがない場合、新しいウィンドウを作成します。ウィンドウを任意の仮想デスクトップに移動させたりワークスペースを仮想デスクトップに復元したりはできません。仮想デスクトップの API の仕様で、ウィンドウの移動や管理はユーザー側で行うことが前提となっているようです。

    フォーラム VirtualDesktopでの挙動について

    フォーラム Windows 10の仮想デスクトップ機能利用時における挙動に関する要望

  • それに伴い、隠しオプションの[General] OpenIn=1を廃止
  • その代わり、 [タブとウィンドウ] に [外部から開く時] のオプションを追加
  • [重ねて表示]、[上下に並べて表示]、[左右に並べて表示] を仮想デスクトップに対応させた

    現在の仮想デスクトップにあるウィンドウのみが対象となります。

  • Windows Vista 以降で [ウィンドウ] の [上下に並べて表示]、[左右に並べて表示] に隙間があったのを修正
  • [ウィンドウ] メニューに [新しい上下グループ]、[新しい左右グループ] コマンドを追加

    タブの上で右クリックからも呼び出せます。

  • [すべて保存して閉じる (現在のデスクトップのみ)]、[すべて閉じる (現在のデスクトップのみ)] コマンドを追加

    現在の仮想デスクトップにあるウィンドウのみが対象となります。

  • [Zen モード] の文字数カウントの書式を修正

    フォーラム ZENモードでの選択範囲文字数の表示

  • メモ帳の置き換え (/z) の引数に相対パスを渡したときの挙動を修正
  • Windows 7 でトレイアイコンをダブルクリックしたときにウィンドウが前面に来ない問題の対策
  • 既にウィンドウが存在する場合はウィンドウの位置を復元しないようにした

    新しいウィンドウで開いたときに前のウィンドウと同じ位置に復元されるのを回避するためです。

  • その他、細かい修正

    ウィンドウを閉じたときの挙動の修正、トレイアイコンからファイルを開いたときにワークスペースが復元されなかった問題の修正など。

3.3.6 (2022-04-15)

  • カスタムバーにフォーカスがあるときに [新規作成]、[開く]、[閉じて開く]、[上書き保存]、[名前を付けて保存] は本体側のショートカットキーを優先するようにした

    例えばアウトラインにフォーカスがある状態でCtrl+Nで [新規作成] できたりします。

  • カスタムバーが表示されるときに幅または高さがエディター部分の 4 分の 3 を超えていたら縮めるようにした

    ウィンドウのサイズを小さくしてからアウトラインを表示した場合など、エディター部分が埋まってしまうのを防ぐための対策です。

  • DirectWrite の OpenType 機能を使えるようにしてみた

    参考 OpenType 機能に対応してみる

  • プラグインの Editor_SetCaretPos メソッドにスクロール位置を指定できるフラグを追加
  • [オプション] ダイアログで直前に開いていたページを保持するようにした
  • [IME を開く] コマンドを追加
  • その他、細かい修正

3.3.5 (2022-03-03)

3.3.4 (2022-01-06)

3.3.3 (2022-01-05)

3.3.2 (2021-12-24)

  • [日付と時刻] の書式に [地域と言語] の [短い形式] が反映されなかった Delphi の不具合への対策
  • Windows 10 の [文字を大きくする] でステータスバーの文字がはみ出てしまう問題へのさらなる対策

    フォーラム OSの設定で文字を大きくすると、ステータスバーに文字が収まらなくなる

  • プラグインの Editor_ViewToLogical メソッドで表示座標と論理座標が逆になっていたのを修正
  • プラグインの Editor_LogicalToSerial メソッドが誤った値を返すことがあったのを修正
  • ファイルが外部で変更されたときに書き込みを禁止できるようにした

    [オプション] の [基本] カテゴリから [外部で変更されたとき] で設定できます。

    フォーラム 排他制御は可能でしょうか

  • 編集モードの [強調文字列] の優先順位をドラッグアンドドロップで変更できるようにした

    正規表現を有効にした場合のみ、上から順に優先順位を付けれるようにしました。

  • [編集モードの設定]、[マクロのカスタマイズ]、[プラグインの設定]、[外部ツールの設定]、[ポップアップメニューの設定]、[フォールバックフォント] の項目をドラッグアンドドロップで移動できるようにした
  • [編集モード] に [Markdown] を追加

    Markdown の名前で編集モードが既に登録されている場合、設定は上書きされません。

    構文解析ではなく正規表現でがんばっているだけなのでうまく色分けされないケースがあるかもしれません。

  • [テーマ] に [Windows Dark] を追加

    Visual Studio の [濃色] テーマ風です。

    Windows Dark の名前でテーマが既に登録されている場合、設定は上書きされません。

  • Ver 3.2.9 の [対応する括弧を強調する] がオンの場合は常に括弧の部分で描画を分ける仕様を廃止

    フォーラム 特定の文字列に対するリガチャ(合字)の動作不具合

  • [オプション] ダイアログのサイズがディスプレイのサイズを超える場合にスクロールバーを表示するようにした

    スクロールバーが表示される機会は少ないため、ダークモードには対応させていません。

    フォーラム 設定画面が全部表示できない

  • プラグインイベントの発生タイミングを修正

    プラグインが閉じられた後にイベントが発生してしまうケースがあったため、非同期で発生させていたイベントを同期で発生させるようにしました。

  • クールバーのサイズが正しく保存・復元されないことがあった問題の対策
  • プラグインメソッドに Editor_AddUndo、Editor_BeginUndoGroup、Editor_EndUndoGroup、Editor_RunMacro、Editor_GetMultiSel、Editor_SetMultiSel を追加
  • マクロメソッドの GetLine と GetLines で引数を省略した場合に論理座標を返すように修正

    フォーラム 複数選択時にマクロの Get 系メソッドでインデックスを省略すると正しく取得できない

  • [次のペイン]、[前のペイン]、[アクティブなペイン] をセカンダリショートカットに対応

    フォーラム アウトライン・プラグイン画面でペインを切り替えるショートカット

  • [自動保存フォルダーに保存する] がオンの場合は [ファイル] メニューの [自動保存] を非表示にした

    自動保存フォルダーに保存する場合、[自動保存] を切り替えるケースは少ないので誤ってオフにしてしまわないための対策です。

  • [自動保存フォルダー] が空の場合は Mery.ini と同じ場所の "AutoSave" フォルダーに "AutoSave-ファイル名" の形式で保存、[上書き保存] 時に削除するようにした

    Microsoft Word の自動保存のように回復の用途で使用できます。自動保存されたファイルは [上書き保存] を実行すると削除され、保存しないで終了した場合はそのまま残ります。

    Mery.ini の [AutoSave] セクションに AutoSaveKeepUnsavedChanges=0 を追記すると、保存しないで終了した場合に自動保存されたファイルを削除します。

  • Home キーまたは End キーを 2 回押しで論理行の行頭または行末に移動できるようにした

    フォーラム マルチカーソルの折り返し行に対する挙動

  • [アウトライン] プラグインの位置の初期値を [左] に変更
  • 鬼雲の USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE をオフにした
  • 鬼車を USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE をオフにした仕様に修正

    いただいた情報により、Mery Ver 2.2.2 の記事に書いた問題 (いつの間にか鬼車の仕様が変わったのか?) は鬼車 5.7.0 での仕様変更によるものだとわかりました。

    USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE を無効にすれば [前を検索] の挙動が改善されますが、鬼車 6.8.0 でこの定義が廃止されていました。

    この修正は鬼車のソースコードに手を加える必要があり、鬼車に暫定対応した目的 (鬼車の開発のお役に立てれば…) から外れてしまうこととメンテナンス性が低くなることを懸念していましたが、鬼車のリリースも落ち着いている様子なので試験的に対応してみました。

    フォーラム 検索の"前"と"次"で、正規表現"(?>pattern)"(原子的式集合)のヒットする回数が違う

  • ダークモードでチェックボックスが無効のときに文字色を暗くした
  • ラベルが無効のときに文字色を薄くした

    クリスマス更新になんとか間に合いました。

    フォーラム 設定画面に配置されている、チェックボックスやドロップダウンリストが、Disableのとき

  • その他、細かい修正

3.3.1 (2021-10-02)

  • 等幅半角字形に対応

    [等幅半角字形を有効にする] をオンにした場合、内部の処理において英数字のチェックが走るようになるのと、文字幅取得の処理が変更されるため、動作速度に影響が及ぶ可能性があります。実用の範囲内かどうか、動作検証にご協力いただけると幸いです。

    参考 等幅半角字形に対応してみる

    フォーラム フォントに含まれる「等幅半角字形」を使えないか

  • ダークモードでクールバーのシェブロンの背景色がおかしかったのを修正
  • Windows 10 の [文字を大きくする] でステータスバーの文字がはみ出てしまう問題への対策

    できるだけはみ出さないようにはしてみましたが、ダークモードの場合、 [文字を大きくする] の設定のよっては文字の下のほうが切れてしまうかもしれません。

    フォーラム OSの設定で文字を大きくすると、ステータスバーに文字が収まらなくなる

  • Windows XP で [変換中の文字列を挿入モードで入力] がオンの場合に下線が表示されなくなることがある問題を修正

    スクロールバーマーカーの描画で使っている TBitmap でTransparent := True;にすると、Windows XP 環境でなぜか IME 関連の API を実行した後に GetLastError でエラーコードが返るという謎の現象への対策を行いました。

    Transparent を使わずにマスク用の TBitmap を用意して BitBlt で SRCPAINT と SRCAND で転送するという、伝統的な透過の方法にしてみました。シンプルなのでスクロールバーマーカーの描画速度は向上しているかもしれません。

  • その他、細かい修正

3.3.0 (2021-09-17)

  • Windows 11 のための修正 (Windows 11 Pro 21H2 22000.132、22000.176 で確認)

    スクロールバーやスピンエディットが描画されない問題、ダークモード有効時に一部のチェックボックスの色がおかしい問題など Windows 11 向けの修正を行いました。

  • フォント関連の処理を全体的に作り直した

    フォントによっては Thin や ExtraLight が正しく描画できないことがあるという問題への対策として、描画関連の処理を大幅に見直したため、今回、マイナーバージョンを上げました。

    フォーラム IBM Plex Sans JP で ExtraLight, Thin ウェイトを使うと Bold ウェイトになる

  • タイ語、ラオ語、カンナダ語対応のため結合文字の処理を作り直した

    結合文字の処理の見直しと、結合文字の判定に使用しているテーブルを Unicode 13.0 に対応させました。

    フォーラム カンナダ語の結合文字

  • U+02E5、U+02E9 の組み合わせに対応

    U+02E5 と U+02E9 を組み合わせた文字の描画に例外的に対応しました。

    フォーラム タイ語の一つだけの母音が正しく表示されない

  • [文字間] の設定をピクセル単位から 10 分の 1 文字単位に仕様変更

    フォントのサイズを変更したときに文字間も相対的に変更されるようにしました。

  • 印刷ダイアログから [文字間] を設定できるようにした

    従来は印刷時にエディターウィンドウの文字間が適用されていましたが、印刷時にエディターウィンドウとは別に [文字間] を設定できるようにしました。

  • 印刷ダイアログの [行間] を 10 分の 1 行単位に仕様変更

    従来はドット単位でしたが文字の高さの 10 分の 1 単位に仕様変更しました。また、[文字間] の項目追加により [行間] の項目は印刷ダイアログの右下に移動しました。

  • [強調文字列] の設定と [マーカー] の設定の一覧で色番号の部分を右クリックで数値を減らせるようにした

    左クリックで数値の増加、右クリックで数値の減少ができるようになりました。

  • [外部ツールの設定] ダイアログの設定値の表示項目でアンパサンドがアクセラレータキーとして表示されていたのを修正

    フォーラム 外部ツール設定画面とアクセスキー

  • DirectWrite 有効時、背景画像を設定していると特定の条件下で行番号の部分の背景が再描画されないことがあったのを修正

    フォーラム 横スクロールで行番号の上まで本文が移動する

  • [ファイルへ移動] でカーソルのある行が中央付近になるようにした

    [ファイルから検索] の結果からファイルに移動した場合など、カーソル位置が画面の下のほうになっていたものを改善しました。

  • Tidy を 5.8.0 に更新

    ついにリリースされた、公式の安定版だそうです。

  • [オプション] の [DirectWrite] に [合字を有効にする] を追加

    テキストエディターとしては合字 (リガチャ) をオフにしたほうが編集しやすいケースもあるので、オプションでオフにできるようにしました。

  • ダークモードで Microsoft の Fluent UI System Icons を実装

    プラグインのアイコンは後日、更新しておきます。

  • [常に最上位] がオンの状態でモーダルなウィンドウが表示された場合に一時的に [常に最上位] を解除するようにした

    フォーラム 保存ダイアログが裏にまわる

  • テーマ無効時のタブの閉じるボタンの位置を修正

    Windows XP などでクラシックスタイルを使っているときにズレていました。

  • サードパーティ製コンポーネントのライセンスを付属の ThirdPartyNotices.txt ファイルに記載するようにした

    ライセンスを記載したファイルが散乱してきたのでひとつにまとめました。

  • クリップボード履歴に行テキスト、矩形テキストの形式を含めるようにした

    以下の機能追加にともない、クリップボード履歴にこれらの機能が必要となりました。

  • マクロの ClipboardData オブジェクトでクリップボードの形式を指定できるようにした。従来の GetData、SetData も使用できますが Deprecated (非推奨) となります

    フォーラム クリップボードフォーマット追加機能のご提案

    フォーラムでご提案いただいていた、クリップボードに格納されているデータに対してクリップボード形式を追加で書き込むというAddFormatメソッドですが、技術的には実現できました。

    しかしながら、他のアプリケーションで作成されたクリップボードのデータに対して Mery のクリップボード形式を追加するとなると、想定外のデータが意図しない形式で貼り付けられる可能性があり、動作不良のもとにもなりますので、今回は実装を見送りました。

    クリップボードにデータを設定するときは、clipboardData.SetData(format, data [, pos]);のように文字列と一緒に形式を指定していただくかたちとなります。詳細はマクロリファレンスをご参照ください。

    参考 マクロリファレンス:3:ClipboardData オブジェクト - MeryWiki

  • その他、細かい修正

3.2.9 (2021-06-04)

ダウンロード

導入が簡単なインストーラー版、設定ファイルを外部に作成しないポータブル版、レジストリを一切使用しない ZIP 版を用意しています。

インストーラー版

解凍などの作業が必要なく簡単に使えるインストーラー版です。

Mery Ver 3.3.9 (64 ビット版) インストーラー Mery Ver 3.3.9 (32 ビット版) インストーラー
VirusTotal で誤検出されたり SmartScreen で保護されたりしますが、もちろんウイルスではありません。ご心配なかたは正式版が Vector さんか窓の杜さんで公開されるまでお待ちください。

ポータブル版

インストールは不要。通常の ZIP 版と異なり設定ファイルを外部に作成しないので USB メモリに保存して持ち歩けますし、PC 環境を汚すこともありません。

Mery Ver 3.3.9 (64 ビット版) ポータブル Mery Ver 3.3.9 (32 ビット版) ポータブル
ポータブル版は解凍したフォルダの中に、設定ファイルなどのすべてのデータを保存しますので、必ずアクセス権のあるフォルダに配置してください。

ZIP 版

アーカイブを解凍するだけですぐに使える ZIP 版です。

Mery Ver 3.3.9 (64 ビット版) ZIP Mery Ver 3.3.9 (32 ビット版) ZIP
ZIP 版はレジストリを汚したくないかた向けにインストーラー版の内容を ZIP アーカイブにしたものです。1 つの環境に複数の Mery を導入する場合は ZIP 版ではなくポータブル版をご利用ください。

おわりに

某流行り病や世界情勢の影響でみなさん不安な日々をお過ごしのことと思いますが、Mery をご愛用いただき、動作検証と開発支援にご協力をいただきありがとうございます。

おわりに

直接お礼を申し上げることができないのが心苦しい限りですが、この場を借りて心より感謝を申し上げます。

おかげさまで、今年も無事、当サイトと MeryWiki のレンタルサーバー料金の支払いを済ませることができました。

また、いただいた支援物資は大切に使わせていただいています。開発のモチベーションも維持できており、毛根もなんとかがんばってくれているようです。

バージョン 3 系では、DirectWrite の高速化、鬼車対応、矩形編集・マルチカーソル対応、ダークモード対応など試験的な内容が多かったため安定するまでに時間がかかってしまいました。

本バージョンからは正式版に向けて、以下のような作業に取り組みたいと考えています。

  • 新機能の追加は控えて正式版に向けての調整
  • 従来の正式版より後に追加された機能の整理
  • マニュアルおよびマクロリファレンスの整備
  • 使い方のヒントやよくある質問と回答の整備

こういった作業は苦手なもので、つい新機能の開発や面白い機能の実験で遊んでしまのです。

プログラミングって楽しいよね!!

何年待たせるんだというツッコミはスルーしつつ、今回も正式版に向けてのやる気だけは見せているテキストエディター Mery でした。

スポンサーリンク

関連する記事

フォローする