-
Notifications
You must be signed in to change notification settings - Fork 163
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
レイアウト座標を半角単位桁数に戻したい #1645
Comments
文字幅をpx単位で管理してはアカン理由を考察するのに参考とできる挿絵のあるドキュメントを紹介しときます。 日本語フォントの余白定義はここまで細かくないですが、フォントグリフってのは本来こういうクソ細かいパラメータを持っていることを理解しておいて損はないと思います。(具体的に「だからどーよ。」というのは要らんです。) |
ピクセル単位にもう一つ問題点があることに気が付きました。
フォントフォールバックなどによって文字幅が異なるフォントが混在した場合、1桁あたりピクセル値も複数存在することになるので、桁換算して処理を行っている箇所では結果に影響がありそうです。 |
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii |
縦方向と横方向をデータ型で区別した場合、「この数値は文字数なので~XIntで宣言してください」といったレビュー指摘をしないといけないので、レビュワーの負担が増えそうですね。 |
issue とはあまり関係ないですが、空白記号描画( CFigure_HanSpace )もプロポーショナルフォント対応で問題を抱えてしまったみたいです。 半角空白の記号が下半分に英小文字の「 o 」、上半分に空白を使用した合成文字になっていて、それぞれのピクセル単位文字幅が異なるかもしれません。 |
意味があるかどうか微妙なんですけど、POINT_TYPEやRECT_TYPEにテンプレートクラスを使えば型の誤りを「コンパイルエラー」にできます。 template<typename POINT_TYPE>
class 点を表す型 : public POINT_TYPE {
using X_TYPE = decltype(POINT_TYPE::x);
using Y_TYPE = decltype(POINT_TYPE::y);
public:
void SetX(X_TYPE);
void SetY(Y_TYPE);
}; どちらかというと、行・桁の組み合わせを「点」と表現していることも問題な気がします。 class CLocation {
uint32_t row = 0; //!< 文章先頭からのオフセット行。値域=[0, INT_MAX]
uint32_t column = 0; //!< 行頭からのオフセット位置。WORD単位。値域=[0, INT_MAX]
}; そういえばx64対応の目標って、 |
たぶん文字幅は問題ないと思います。 Unicodeには、もともとそれっぽい形で定義された文字があるので、それを使うことが対策になるかもしれません。 |
忘れないようにメモしておきます:
|
違った。 |
やりたいこと(=実現したいこと)
サクラエディタ内部で扱うドキュメント上の座標単位を半角単位桁と行の組み合わせに戻したい
やりたい理由
解決手段の提案
事前に検討する必要があるもの
内部単位の再定義に伴う取り扱いを検討する
参考案
矩形選択を等幅フォントに限定するかを検討する
単位換算機能の提供方法を検討する
sakura/sakura_core/view/CEditView.h
Lines 117 to 118 in 062cda8
半角1桁あたりピクセル幅の計算方法を検討する
ゆえに半角文字の幅が全角の幅の1/2より広くデザインされた等幅フォントでは、半角2桁と全角文字の幅が一致しません( OSDNより転載:等幅フォントを使用した時、1バイト文字2文字と2バイト文字1文字の文字幅が一致しない。 #1250 として報告済み)。
sakura/sakura_core/view/CTextMetrics.cpp
Lines 52 to 57 in 062cda8
関連情報
( CHabaXInt は 66f5d68 まで使用されていませんでした。)
「レイアウト座標が桁からピクセルに変更された」ものの、そうした理由は説明されていません。
replace: patchunicode#1034
The text was updated successfully, but these errors were encountered: