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

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

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

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

スポンサーリンク

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 への正式対応とまではいきませんが、問題が発生しそうな箇所に対策を行いました。

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 としています。仕様上の制限事項ということでご了承ください。

変更ログ

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

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

ポータブル版

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

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

ZIP 版

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

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

おわりに

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

おわりに

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

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

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

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

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

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

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

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

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

ANABAS スチームクッカー ゆで玉子名人 かんたん蒸し器 ゆで卵メーカー タイマー付き イエロー SE-001

ANABAS スチームクッカー ゆで玉子名人 かんたん蒸し器 ゆで卵メーカー タイマー付き イエロー SE-001
アナバス(Anabas)
簡単、便利、筋トレにも最適!自動でとろとろ半熟たまごが同時に 7 個も作れます。ついでに蒸し料理も作れます。
Amazon で探す 楽天市場で探す

スポンサーリンク

関連する記事

フォローする