パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

IPAmj明朝フォントVer.005.01が公開される」記事へのコメント

  • Unicode のバックスラッシュ (U+005C) が正しくバックスラッシュの字形になっていることを確認したいのですが、簡単な方法はないでしょうか (このフォントに限らず)

    • by Anonymous Coward

      メモ帳でも MS Word でも、 U+005C を入力しておいてフォント変更して見れば良いだけでは?

      • by Anonymous Coward

        まぁそうなのですが、フォントがたくさんあると大変です。そもそもフォントをインストールしなければならないのが苦痛です。ライセンスとか読まなきゃいけないし、気に入らなければアンインストールしたりするので。コマンドラインで解決したりするとありがたいです。例えば、

        $ ほげほげコマンド ipamjm.ttf U+005C

        とか打ち込むと、字形が標準出力にアスキーアートで出力されるとか。そういうのないですか? 自分で作れ? あぁそうですか。

        • はいよー。

          #include <iostream>
          #include <cstdlib>
          #include <ft2build.h>
          #include FT_FREETYPE_H
           
          int main(int argc, char** argv) {
              if (argc < 2) {
                  std::cout << "usage: ttview <path> [ch [height]]" << std::endl;
                  return 0;
              }
              FT_ULong ch = 'a';
              FT_UInt height = 30;
              if (argc >= 3) {
                  ch = argv[2][0];
                  if ((std::toupper(ch) == 'U') && (argv[2][1] == '+')) {
                      ch = std::strtol(argv[2]+2, nullptr, 16);
                  }
              }
              if (argc >= 4) {
                  height = atoi(argv[3]);
              }
              FT_Library library;
              FT_Init_FreeType(&library);
              FT_Face face;
              if (FT_New_Face(library, argv[1], 0, &face) != 0) {
                  std::cout << "error" << std::endl;
                  return 1;
              }
              FT_Set_Pixel_Sizes(face, 0, height);
              if (FT_Load_Char(face, ch, FT_LOAD_RENDER) != 0) {
                  std::cout << "error" << std::endl;
                  return 1;
              }
              auto& bitmap = face->glyph->bitmap;
              const char pixels[] = " .*#";
              for (int y = 0; y < bitmap.rows; y++) {
                  int i = std::abs(bitmap.pitch)*y;
                  for (int x = 0; x < bitmap.width; x++) {
                      char ch = pixels[bitmap.buffer[i++] >> 6];
                      std::cout << ch << ch;
                  }
                  std::cout << std::endl;
              }
              FT_Done_Face(face);
              FT_Done_FreeType(library);
              return 0;
          }

          親コメント
          • ライセンス的に問題を起こしたくない人が真に気にすべきなのは、T.Sawamoto さんが書いてくださった #3354612 [srad.jp] のような、著作権の扱いが明示されていないコードなんですよね。

            著作権の扱いが明示されていないコードの問題点については、以下を参考にして頂けると有り難いです。
            Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 [hatena.ne.jp]

            著作権を主張しないつもりなんだったらそれを明示的に宣言して欲しい。ライセンスが明示されていないのは、どんなライセンスよりも厳しいライセンスだ。

            GPL をウイルス扱いして問題にするする人がいますけど、上記の経緯を見て頂くと、ライセンス不明のコードが GPL 以上の問題をはらんでいることを理解して頂けると思います。
            善意でコードを提供される方はその善意を無駄にしないためにも、たかだか1行で構いません、「PDS で提供します」なり「〇〇ライセンスの下で配布します」なり、著作権の扱いに関して一言を添える事をご検討ください。
            著作権の扱いが明示されていない善意は最悪の場合、手助けどころか大きな障害となる可能性があります。

            --
            uxi
            親コメント
            • えーと、パブリック・ドメインということで……。> #3354612 [srad.jp]

              親コメント
              • by Anonymous Coward

                日本では著作物と認められる限り、保護期間終了までパブリックドメインは無理の筈です。
                最も緩いとされるMITライセンスは大丈夫なので、そちらではどうでしょうか。

              • by Anonymous Coward
                根強い俗説の一つですね
                日本法の下でも問題なくパブリックドメインにできます
              • by Anonymous Coward

                調べました。
                出来るのはそのとおりでした。指摘ありがとうございます。
                ですが、手順に対する見解が統一されている状態でもないので、大手を振って大丈夫と言える物でもないというのもわかりました。
                推奨できるものでもないでしょう。
                この場合MITライセンスにしておいた方が無難かと思いますが、如何お考えでしょうか。ご意見があればお願いします。

              • by Anonymous Coward

                MITライセンスは著作権表示を強制するのでめんどくさいじゃん。
                ちゃんと守ってる?

                しかし著作権に関する主張をしませんという著作権者の言葉が
                信用できないなら、MITライセンスにしますという著作権者の言葉
                も信じられないのでは?

              • by Anonymous Coward

                そういえば、ソースコードに、クリエイティブコモンズライセンス(CC0)は使えないの?

          • by Anonymous Coward

            ジェバンニが光速でやってくれました

            $ ./a.out ipamjm.ttf U+005C 24

            (投稿フィルタに引っかかりました。 空白を減らすか、同じ文章の繰り返しを減らしてみてください。)

            orz 投稿できません。ここに投稿していいものかどうかあやしいのですが。
            とりあえず U+005C, U+00A5, U+9B31 がそれぞれバックスラッシュ, 円記号, 憂鬱の「鬱」が表示されるところまで確認しました。

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

処理中...