UI 向け日本語フォントを考える

By ftake @ 2016-08-20 15:34

Google と Adobe によって開発された Noto Sans フォント(源ノ角フォント)がリリースされ、openSUSE に取り込まれてからだいぶ経ちました。openSUSE では Noto シリーズのフォントに UI フォントを統一しようという流れが出てきています。Noto フォントの魅力は、幅広い言語の文字をサポートしている上に、様々なウェイト(太さ)をサポートしていることです。

一方で、Noto フォントはスマートフォンやタブレットなどの高解像度のディスプレイに合わせて開発されたせいなのか、KDE や GNOME アプリケーションでは、行の高さが大きすぎて、ちょっと微妙なレンダリング結果になるようです。

ここでは、現在の日本語フォント IPA Pゴシック、Noto Sans CJK Regular、Migu 1C Regular を比較してみます。Leap 42.1 に採用されている古い fontconfig はマルチウェイトフォントを正しく検索できないため、M17N リポジトリからの 2.12.0 を使いました。

また、サブピクセルレンダリングの効果を試すため、サブピクセルレンダリングを有効化※し、自分でビルドした FreeType 2.6.5 を使いました。
※特許で保護されているため、openSUSE では無効化されている

ft-view で比較

font-comparison-ft-view

まずは、ft-view によるレンダリングの比較です。上3つが Noto Sans CJK JP のレンダリング結果です。最上段の左と右はサブピクセルレンダリングの有無の比較です。「編」の字の縦棒がサブピクセルレンダリングの効果で分かりやすくなっていますが、劇的には変化はないようです。

Noto Sans の1段目と2段目はヒンティングの有無の比較です。「設」の字が分かりやすいのですが、ヒンティングを有効にすると、各文字が全体的に縦長に見える傾向があります。

3段目は IPA Pゴシックと、Migu 1C のレンダリング結果です。IPA Pゴシックは、他の2つのフォントに比べて、明らかに行の高さが小さくなっています。特に印刷物で使うには、行間が狭すぎることが多いです。一方、UI で使うときは、低解像度のディスプレイに文字を詰め込むために、この行間に慣れているのではないかと思います。

Migu 1C は M+ 1c ベースのフォントで、ひらがな・カタカナの字幅を小さくしたり、濁点・半濁点を大きくし読みやすくしたフォントです。横方向を狭くして詰め込む方法もまた、長らく使われてきた習慣だと思います。一方で、縦方向の行間は比較的広めで、Noto フォントと同じくらいです。

GTK アプリケーションのメニューのレンダリング比較

行の高さはアプリケーションの余白に大きく影響します。次の図は、GNOME の Nautilus で、動画ファイルを右クリックしたときに表示されるメニューの比較です。同じフォントサイズを指定しても、3つのフォントで1行分以上の差が出ます。

font-comparison-gnome-shell

ここで不思議なのが、Noto Sans と Migu 1C が、ft-view では差があまり無かったのにもかかわらず、メニューの高さはだいぶ異なるようです。フォントメトリックスの何かの違いが影響を与えていると思いますので、このあたりは今後調査してみます。

KDE の Kickoff ラウンチャー

最も差が出るのが、昔の KDE のラウンチャーの Kickoff です。Plasma 5 を使用している場合は、メニューのアイコンを右クリックして「Alternatives」から切り替えることができます。

font-comparison-plasma

ここまで差があると、不具合のような気もしますが、Noto Sans では、多くのノートPCの縦解像度 768 px を超えて、800 px ギリギリまで到達してしまいました。(この PC は 800 px あります)

まとめ

openSUSE では、さざなみフォントの後、IPA フォントが長らく使われてきましたが、FreeType との相性が悪い文字・記号や、太字が無いため、どこかで他のフォントに切り替えないといけないと考えています。

Noto Font は強力な候補なのですが、行間問題は様々なアプリケーションに影響がありそうなため、調査と対策が必用そうです。

M+ 系の(Bold がある)フォントも、本家 M+ フォントが10年の歳月をかけてJIS 第1水準を超えており、日本語のフォントという観点では引き続き選択肢となりそうです。

OSC 2016 Kyoto に出展しました

By ftake @ 2016-08-02 23:28

ちょっと仕事や Geeko Magazine で忙しかったので、どうするか迷ったものの、やはり京都は要望が大きい重要 OSC ということで、出展してきました。今回は名古屋~大阪エリアの openSUSE コミュニティのメンバー3人にも店番を手伝ってもらいました。(東京より多い?)

セミナーは openSUSE とは(あまり)関係なく、「OSS に貢献してみるには」という内容で行いました。15人ほどが集まり、何に興味があるかを聞いてみたところ、ほとんどの人はバグ報告とコーディングに興味があるようでした。翻訳も3分の1ほど興味がある人がいた一方で、パッケージングは0でした。(セミナーを通して、少しは興味を持って頂けたでしょうか?)

この内容はインドネシアで開催される openSUSE.Asia Summit でも話そうと思っています。

写真

恒例の写真です。スパークリング日本酒の澪の試飲会には驚きました。

01-P7300286 02-P7300290 03-P7300292

05-P7300297 11-P7300354 13-P7300306

8月14日はコミックマーケットで Geeko Magazine の頒布がありますので、お忘れ無く!

Geeko Magazine 2016 夏

By ftake @ 2016-07-25 00:11

geeko-magazine-2016-summer

Geeko Magazine Special Edition の4冊目、2016夏号をコミックマーケット C90 で頒布します。スペースは日曜日(3日目) 西3・4ホール f-13b です。東京オリンピックの準備が始まり、今年は今までの企業スペースがあったホールです。

今回は締め切りにも間に合い、オフセット印刷で冊数が十分にあるため、11月のOSC東京や KOF でも頒布できる見込みです。

内容は次の通りです

  • AutoYaST は使えるのか?
  • Web開発環境を作ってみよう
  • 自分用パケットキャプチャとか作ってみます?
  • Raspberry Pi 2 に Tumbleweed をインストールして秋月のIGZO液晶を接続してみた
  • 漫画: やすとちゃん
  • 小説: mini summit の後に

今回は表紙の書き手がいなかったため、Geeko の写真ですが、中身はいつも通りですので、お手にとって頂ければと思います。

今日は Windows や Mac でおなじみの商用のアンチウイルスソフト Sophos Antivirus の個人向け無償版のを Leap 42.1 にインストールする方法を紹介します。

まずはダウンロードします。以下の URL からダウンロードできます。
https://www.sophos.com/ja-jp/products/free-tools/sophos-antivirus-for-linux.aspx

ダウンロードまでの間に、氏名とメールアドレスなどを2回求められます。2回目は米国輸出管理法の輸出先の確認のためのようです。職業は「個人利用者」、会社名は「個人」とでもしておけばよいでしょう。

ここからはターミナルで作業です。ファイルを回答してインストーラーを走らせるだけです

ここからはインストーラの指示に従って作業を進めます。まずは使用許諾契約に同意します。Enter キーを押して契約書を表示して、読んだあとに、Yキーで同意します。

ライセンス内容に同意しますか? はい(Y)/いいえ(N) [N]
> y

次にインストール先を求められます。特にこだわりがなければそのままで問題ありませんので、何も入力せずにEnterを押します。なお、インストール先には1GB程度の空き容量が必要なようです。

Sophos Anti-Virus のインストール先を指定してください。 [/opt/sophos-av]
>

アプリケーションからファイルにアクセスしたときに検索を行う、オンアクセス検索を有効にします。

オンアクセス検索を有効にしますか? はい(Y)/いいえ(N) [Y]
>

アップデートのダウンロード元です。そのままでOKです。

オートアップデートの種類を選択してください: ソフォス(s)/自社サーバー(o)/なし(n) [s]
>

今回は無償版を使うので f を入力します。

SAV for Linux の無償バージョン (f) と サポート対応付きバージョン (s) のどちらをインストールしますか? [s]
> f

プロキシは必要に応じて設定してください。

ソフォスからアップデートを行うためにプロキシが必要ですか? はい(Y)/いいえ(N) [N]
>

しばらくすると、インストールが終わります。動いているかを確認するには、savdstatus コマンドを使います。

openSUSE にこの方法でインストールすると、オンアクセス検索を行うために、fanotify とよばれるファイルへのアクセスイベントを捉える仕組みが使われます。現時点では fanotify を使った検索が、NFS と CIFS (Samba) で有効になっていると問題があるようです:
https://www.sophos.com/ja-jp/support/knowledgebase/14377.aspx

対策としては、NFS や CIFS でマウントしたディレクトリを検索対象から除外すれば良いようです。どうやって除外するかというと、savconfig コマンドの ExcludeFilePaths で、除外するファイルまたはディレクトリのパスを指定します。複数のパスを追加したいときは、繰り返しsavconfigを実行します:

除外する範囲は、ファイルシステム名でも指定できるようです。ExcludeFilesystems で除外するファイルシステムを指定します。ファイルシステムの名前は /proc/filesystems に書かれたものを入力すればよいそうです。

昨年9月に20人以上を集めた openSUSE mini Summit を今年も開催します。イベントの詳細はこちら:
https://opensuseja.doorkeeper.jp/events/46644

openSUSE の活用事例や、調べたことの紹介などの発表者を募集しています。特にライトニングトークについては、自己紹介を兼ねて気軽にエントリーして頂ければと思います。

一人でも多くの方のご参加をお待ちしております。

OSC 2016 群馬

By ftake @ 2016-05-16 23:15

5月14日(土) に群馬で初めてオープンソースカンファレンスが開催されたので行ってきました。一応、首都圏とは言え、神奈川からは上野東京ラインで2時間半の旅です。埼玉と群馬の県境に何かあるのか、休日おでかけパスも埼玉県内の神保原までしか行けない(240円乗り越し)そんな場所です。

会場は、駅前のヤマダ電機のイベントスペースです。ヤマダ電機は高崎が創業地のようで、地元の人が集まるちょっとしたショッピングセンターになっていました。各種イベントに対応できるようにするためか、舞台袖のあるステージや、各所に天井モニターまであり、展示スペースからもちゃんとセミナーの資料が見られるようになっており、レベルの高い会場でした。駅周辺のヤマダ電機の広告スペースで OSC の告知がされており、いつもの OSC とはちょっと違う様子でした。

ユーザ会では、ブースとセミナーを行いました。セミナーは「開発環境として Linux デスクトップを使ってもらおう」作戦で、コマンドラインテクニックです。今回は SSH 環境で使えるような物が集まっていますが、次回以降は Konsole や GNOME Terminal の使い方なども取り入れていこうと考えています。

写真

autoyastがほぼうまくいった

By ribbon @ 2016-05-15 18:10

ほぼ、autoyast がうまくいきました。

うまくいかなかった原因はいくつかありますが、おそらく、openSUSEインストール時に作成するautoinst.xmlがバグってます。たぶん。

通常はインストールするパッケージがずらっと並ぶのですが、なぜか、そのパッケージを*削除*する一覧がくっついているのですね。こんな感じで。

<patterns config:type=”list”>
<pattern>yast2_basis</pattern>
<pattern>x11</pattern>
<pattern>sw_management</pattern>
<pattern>lxde</pattern>
<pattern>fonts</pattern>
<pattern>enhanced_base</pattern>
<pattern>apparmor</pattern>
<pattern>base</pattern>
<pattern>multimedia</pattern>
<pattern>remote_desktop</pattern>
</patterns>
<remove-packages config:type=”list”>
<package>zypp-plugin-python</package>
<package>zisofs-tools</package>
<package>ypbind</package>
<package>yp-tools</package>
<package>yast2-vm</package>
<package>yast2-users</package>
<package>yast2-tune</package>
….

これじゃ、パッケージの依存関係が正しくなるわけがありません。セクションを手動で削ったらほぼうまくいきました。あと、セクションもうまくハンドリング出来ないので、ここも削ります。

ただ、lxde環境だと、更に問題があります。起動時にlxdmが設定されません。xdm になってしまいます。しかし、kde環境を指定してインストールすると、ちゃんとkdm が指定されて、起動するので、lxdmに設定するという部分が抜けちゃっているのだと思います。

 

1 / 2112345...1020...最後 »