2021年7月21日水曜日

Ubuntu 滅茶苦茶珍道中 其の漆 お試し Mono 日本語が?

頭を抱える事が多い ... 。
はい。  Windows 上で作成した .exe を、
Ubuntu に持ち込み、Mono 経由で動かす ... 筈ですが、
幾つか、検討項目が。


Windows 上の Visual Studio で作成した 実行バイナリ .exe を、
Ubuntu 上の Mono 経由で動かす場合の 覚書 です。
以下、簡単に、ぐたぐた ... と。


1。
起動すると、最大化した状態でスタートしますね。
此れは、 Ubuntu 上の 標準設定 が関わっている様です。
まぁ、 設定変更すれば OK なのですが、
今回は、自作プログラムの性格上、最大化でスタートしても問題は無いので、
放って置きます。
コンパクトなサイズで設計されたもの、或いは、最大化時の考慮が無いものの場合、
対策が必要でしょう。
実行ファイルの作り直し必須かも。


2.
アイコン(Desktop Short-Cut)が Ubuntu では簡単では無い事。
方法を知っていれば、然程、難易度は高く無いですが、
知ら無ければ、Terminal から 一々 mono win_app.exe 等と叩かないと、ね。
  いいえ、 Windows の実行ファイル には Mono が紐付けられていて、
  GUI の ファイル から Double Click でも OK でした。
でも、 Desktop に貼った アイコンそのものの変更 が、私では、上手く行かず、
白地に歯車 になったまま ... 。
もう、いいや、 と 匙投げ! です。  別投稿で既に書いてあります。


3.
一見正常に表示されている DataGridView ですが、
日本語が一部 コケて いました。
Column Data 末尾が ス と ズ 等で終わる場合、其れがありません。
他にも 末尾の1文字が欠落するケースが 結構 あります。
そう、末尾が 文字依存で お隠れ に。
元のデータである .xml を gedit で表示させれば、ちゃんと あるのに ... 。
其れで、右往左往していたのですが、
ある時、別の問題に気付きました。
ComboBox で、日本語を入力し変換して、上記の文字列を確定すると、
やはり、単語末尾の1文字が欠落します。 (欠落する事があります。)
2バイトコードの後半が欠落している感じです。
まいったな、もう ... 。

Windows の Visual Studio から、Form で使っている Font を確認すると、
  Form / TextBox / ComboBox / Label 等
特に、標準から変更はしていないんので、
MS UI Gothic (Msgothic.ttc) です。
Ubuntu には ... ありません。
Font 起因 と説明されている ページ が目に付きました。
Noto Sans CJK Regular が Ubuntu では標準の様ですが、
少し、見辛い文字だと感じていました。
此の際ですから、
日本語の標準フォントとして お勧め が多い IPAフォント 等を導入しましょう。

     令和の合成文字(U+32FF)が追加された IPAexフォント Ver.004.01 (2019.04) 以降。
     IPAex は 和文字:固定幅、欧文字:変動幅(プロポーショナル)
     少し前の IPA は スタイル毎に独立して ありますね。
     以下の 作業 で取得されるものは 最新 ではありませんが ... 。

$ sudo apt install fonts-ipafont fonts-ipaexfont
$ sudo fc-cache -fv
$ fc-match IPAGothic
ipag.ttf: "IPAGothic" "Regular"

$ sudo apt install ttf-mscorefonts-installer
$ sudo fc-cache -fv
$ fc-match Arial
Arial.ttf: "Arial" "Regular"

後者は1回ではすんなり入らず、複数回 再試行 を繰り返しました。

はい。
プログラムに手を入れます。 (Visual Studio 上)
プラットフォームで条件分岐して、フォントを変えます。
Windows なら MS UI Gothic で、Ubuntu なら IPAGothic で。

文字の視認性はフォント変更で向上しましたが、
件の 文字末尾欠落 は解消しませんでした。
そう、フォント起因では無かった! 訳です。

残るは?。

古い情報で、libgdiplus の Version に依存し、日本語表示が崩れるとあったのですが、
如何にも 古い ので、 さて、どうしたものか?。
依存関係もある事だし ... 。
触りたく無い、... いいえ、触れません!。

  Mono Team 若しくは Ubuntu 日本語 Team に Bug 報告する手も有りますが、
  未だ、初心者レベルですので、
  説明不十分になって仕舞うでしょう。  とほほ。  X(


取り敢えず、単語が2バイトコードで終わらなければ、正常に表示されるので、
DataGridView に表示させるデータに対しては、
末尾に 半角の . を付加し、逃げる事にします。
無論、 ComboBox に 日本語入力すると 不正確な変換結果 が返るので、
其処は、運用で、上手に かわす 事で逃げるしか無いのかな?。

此れじゃぁ、用途に依っては 使いもんにならん! ですかね。



0 件のコメント:

コメントを投稿