MT4のフォント名の全角・半角は正確に

MS系フォントの英字は全角、スペースは半角が正解

MT4では、ラベルやテキストをチャートにペタペタ貼り付けることができます。

その際、フォントを指定するのですが、1つ罠にハマったので、備忘録がてら共有します。

結論から言うと、「MS P明朝」や「MS 明朝」などのMS系フォントの真ん中にあるスペースは半角で、それ以外は全角にしないと認識しません。

ですから、「MS P明朝」はNGです。

証拠画像はこちらです。

フォントテスト

以下の順で表示しています。

  • 1. MS P明朝(英字:半角、スペース:全角)
  • 2. MS P明朝(英字:半角、スペース:半角)
  • 3. MS P明朝(英字:全角、スペース:全角)
  • 4. MS P明朝(英字:全角、スペース:半角)←これが正解
  • 5. Unknown Font(英字:半角、スペース:全角)←存在しないフォント
  • 6. Unknown Font(英字:半角、スペース:半角)←存在しないフォント
  • 7. MS Pゴシック(英字:全角、スペース:半角)←これも正解
  • 8. (フォント指定なし)
  • 9. Arial

やってしまいがちな誤記は、2と3だと思います。

まさか全角と半角を混ぜる必要がある4とは思わないですよね^-^;

5以降はおまけです。

存在しないフォントを指定したらどうなるかをテストしたのが5と6です。違いは一部全角文字を混ぜたか否か(5のスペースが全角)。

全角文字を含む不正なフォント名を指定すると、どうやら「MS Pゴシック」に変換されるようです。

その証拠が7です。5と7は同じフォントになっていることが分かります。

6のようにオール半角で不正なフォント名を指定すると、文字が消えちゃいました。

8はフォントを指定しなかった場合です。その場合、デフォルトの「Arial」が採用されます。

全角文字に対応していないフォントなので文字化けしちゃっていますね。

本当にArialなのか疑ってみた結果が9です。文字化けの仕方が同じなので、Arialで間違いなさそうです。

地味ですが間違いやすいので、MT4のEAやインジケーターを作成する方はご注意ください。

白状すると、私が作った過去のプログラムも一部間違っておりましたorz

幸い「MS Pゴシック」をデフォルトパラメータにしていたので、出力結果としては問題ありませんでしたが…。

サンプルソース

上記の証拠画像のソースを無くさないように貼り付けておきます。

//+------------------------------------------------------------------+
//|                                                     FontTest.mq4 |
//|                                     Copyright (c) 2019, りゅーき |
//|                                           https://autofx100.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2019, りゅーき"
#property link      "https://autofx100.com/"
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  FontTest("FontTest1",  40, 1, "MS P明朝");
  FontTest("FontTest2",  70, 2, "MS P明朝");
  FontTest("FontTest3", 100, 3, "MS P明朝");
  FontTest("FontTest4", 130, 4, "MS P明朝");
  FontTest("FontTest5", 160, 5, "Unknown Font");
  FontTest("FontTest5", 190, 6, "Unknown Font");
  FontTest("FontTest6", 220, 7, "MS Pゴシック");
  FontTest("FontTest7", 250, 8, "");
  FontTest("FontTest8", 280, 9, "Arial");

  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
}

//+------------------------------------------------------------------+
//| FontTestオブジェクト作成                                         |
//+------------------------------------------------------------------+
void FontTest(string aObjNm, int aY_Distance, int aNo, string aFontName)
{
  bool created = ObjectCreate(0, aObjNm, OBJ_LABEL, 0, 0, 0);

  if(created){
    ObjectSetInteger(0, aObjNm, OBJPROP_XDISTANCE, 20);
    ObjectSetInteger(0, aObjNm, OBJPROP_YDISTANCE, aY_Distance);
    ObjectSetInteger(0, aObjNm, OBJPROP_FONTSIZE, 20);
    ObjectSetInteger(0, aObjNm, OBJPROP_COLOR, clrWhite);
    ObjectSetString(0,  aObjNm, OBJPROP_TEXT, (string)aNo + ". あいうえお アイウエオ ABCDE");

    if(aFontName != ""){
      ObjectSetString(0, aObjNm, OBJPROP_FONT, aFontName);
    }
  }
}

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG