試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

STed2のその他の問題点を修正するパッチ(2008/1/26版)の覚え書き

STed2のその他の問題点を修正するパッチを作成(2008/1/26版)」のパッチに関する覚え書き。

外部プログラムの設定(sted2-20021104-cnf-extprog.patch)

メニューの「OPTION」の外部プログラムの定義に含まれているが、実際には使用できない項目(「.x」の拡張子を持つX680x0用実行ファイルなど)を削除し、日本語部分も英語にしている。その他、コマンド名を一部修正したところもある。「.x」ファイルに関する記述は他の部分にも見られるため、今後の修正の対象。

curses.cのstring.h(sted2-20021104-curses-string_h.patch)

動作に影響はない可能性が高いが、Gentoo Linuxの自作ebuildでビルドしたときの

 * QA Notice: Package has poor programming practices which may compile
 *            fine but exhibit random runtime failures.

の対策として当てている。

日本語メッセージカタログの修正(sted2-20021104-ja_po.patch)

一部メッセージの修正もあるが、それ以外は、ソース中にEUC-JPな日本語でそのまま書かれた日本語文字列の対策と、音符/休符などの表示に関する改善のため。

調号数の表示に関する不具合修正(sted2-20021104-keysub.patch)

UTF-8環境において(?)メイン画面で調(キー)が表示される部分の不具合に対処する修正。_()つまりgettext()関数を呼んでいる部分があるため、メッセージカタログ側にもこれに対応した修正を含む。

改行文字によるビルドエラーの修正(sted2-20021104-sayleen-newline.patch)

STed2(数値入力方式MIDIシーケンサ)のビルド・インストールメモ」で扱った修正。改行部分の書き方の誤り*1により出るエラーを回避する。

譜面に関する色々な修正(sted2-20021104-score.patch)

最も修正の多い部分。メッセージカタログ側にも、対応した修正を含む。

  • 音符の記号の表示をEUC-JPな文字からgettextを使用する*2方法にして、メッセージカタログのカスタマイズによって、長さごとに文字を指定できるようにした*3
  • 音部記号(ト音記号ヘ音記号)としての文字を表示する仕組みには元々なっているのだが、ここに「G:」「F:」という文字を描画するようにした*4
  • 音符の高さがずれているのに対処し、加線・シャープ/ナチュラル記号のずれにも対応した(ナチュラル記号はないため、似た記号で代用)。

以下、その他覚え書き。

音符のY座標

「819」の部分を変化させると、全ての音符の文字のY座標を調整できる。

f=onp_ps[a]+f*7;y=(819+7*4)-(f*4);
加線を付けるY座標

加線の付く場所は5箇所ある。これら5つの座標値を同じだけずらした。

if(y==651||y==659||y==707||y==755||y==763){
音符の描画
g_print(xx,y,tmp0,15);

milkjfフォントでは、(音符に「*」を使用した場合)「y」の部分を「y-1」にしたほうが位置が正確になる。
関連記事:

なお、公開されているソースでは音符マークの記号が並ぶようになっているが、長さの短い音符が連続するときに見づらくなることがあるため、パッチ適用後の状態としては「*」が出るだけにしてある。これを変更するにはpo/ja.poの「msgid "head[数字]"」の下にある「*」をいじってmakeするかmsgfmtを直接実行してmoファイルを作るかして[インストール先]/share/locale/ja/LC_MESSAGES/sted2.moとして配置する。
更に、「msgid "flag[数字]"」の下の「" "」を変更することで音符の旗部分を描画することもできる。
なお、上の数字部分は音符の長さに対応していて、分解能(TIMEBASE)=48としたときの長さ*5に合わせて名前を付けた。

休符の描画

文字/記号で休符を表現するのは困難。実験的に数字と記号を使用してみたが、分かりにくいかも。
修正は上の音符と同様、po/ja.poで「msgid "rest[数字]"」の下の文字列で指定する形にした。

xgettext対策(sted2-20021104-select.patch)

「非ASCIIな文字が含まれている」とxgettextに怒られるため、未使用(不要)のコードを一部削除した。

X Window System版が起動しない不具合の修正(sted2-20021104-xcreatefontset.patch)

使用できるフォントセットがあっても、missingがあるとエラー扱いされて起動できない件の修正。
STed2が「Cannot open display. Aborting.」となって起動できない件についてとその対処」で扱った。

*1:2002年秋の時点で使用されていたバージョンのGCCではエラーにはならなかったと思われる

*2:文字列部分は、xgettextに国際化対応であることを知らせるだけで何もしないN_()で記述しておき、表示部分のg_print()側で_()に渡す形に変更する

*3:長さごとに音符や休符の形を変えることは、元々のコードで実現しているが、表示するフォントの問題で実際には同じ記号が並ぶ形になっている

*4:doc/memoというテキストファイルによると、sted2.fonの中に、音部記号や音符などの専用フォントデータが色々入っているらしいのだが...

*5:4分音符の長さ=48