たまりば

  パソコン・インターネット パソコン・インターネット  三鷹市 三鷹市

最近のWindowsのビットマップフォントの太字
2017年01月09日 18:49

MSゴシックのようなウェイト(太さ)が1種類しかないビットマップフォントをテキストエディタやHTMLなどで太字指定すると、自動生成された太字が表示される。
単純な太字化アルゴリズムとして古くから用いられているのが横方向に1px太らせる手法で、WindowsでもXPまで長らく使われていた。
単純な太字
この手法の問題点は、1pxの隙間を開けて縦線が並んでいる箇所で隙間がつぶれてしまうことだ。
「棚」「鵬」などの縦線の多い字を小サイズで表示すると黒い塊になってしまう。
隙間が潰れる

このつぶれを避ける改良版のアルゴリズムとして、「横に1px太らせてつぶれるなら、太らせない」というものがある。
スーパーの太字
なお、右に太らすか左に太らすかで2種類存在する。
スーパーの商品の値札の文字や、Javaで作られたGUIの文字表示に使われているのをよく見かける。
最初にこれに気づいたのがスーパーの値札だったので、自分の中でこれは「スーパーの太字化アルゴリズム」と認識されている。
これを最初に見かけた時は画期的だと感心したものだが、これにも欠点はあって、元々連続的な線であったところが太くなるところとならないところが混在すると形状が乱れて文字が読みにくくなってしまう。
スーパーの太字_乱れ
図の赤で示したあたりが不自然な形状になっている。

そして本題の最近のWindowsの太字だ。これが更に画期的なのである。
最近のWindowsの太字
これは最初に気づいたのがWindows7のインストール画面で、Windows7で始めて実装されたものと思っていたのだが、確認してみるとVistaでも使われていた。
Vistaにも最初からあったのに気づいていなかったのか、それともアップデートで実装されたのか分からない。ともかく、XPまでは無く、7からはある。
この手法の特徴は見て分かるように白黒2値でなく中間調の灰色を使っている点だ。
単純な太字化で問題ないところでは黒で横に1px太らせ、単純にはつぶれてしまうところでは灰色で太らせる。
ここでスーパーのアルゴリズムと異なり、縦に連続する黒ピクセルは常に同じ色で太らせる。これにより形状が乱れることを防げている。

しかしこのアルゴリズムは思った以上に複雑で色々とわからない点がある。
Windows太字の不明点
・黒にするか灰色にするかの判断
単純に太らせると別の点に接触する場合は灰色なのかと思いきや、そうでない場合がある。例えば「棚」の赤で示した木偏の縦線は下2pxが隣の月に接触しているが構わず黒で太らせている。

・灰色の濃さ
接触する点が多いほど薄くなっている傾向は分かるのだが、細かく見るとそう単純ではない。
「鵬」の月の中と、月と月の間は両方とも100%接触なのだが色が違う。率だけでなく、ドット数や分断の有無で変わるのだろうか。
「繭」の一番左の灰色は、5ドット中4ドット接触だが、100%接触の鵬のドットより色が薄い。

・ひとつづきに扱う範囲
「繭」の赤で示したドットは、真ん中と下は横線で隔てられているが同じ色で太っている。また上は白ドットで隔てられていて違う色で太っている。
白ドットで隔てられた時は別扱いかと思いきや、青で示したドットは同じ色で太っている。(ともに100%接触だが、ドット数が違えば色は変わるものと思われる)

そんなわけで詳しいアルゴリズムがずっと気になっているのだが、不思議な事にこのアルゴリズムについてネット上で情報を見かけない。Windows7当時から探しているのだが、本当に1つも見つからない。
何か情報があればぜひ教えて欲しい。

  • 同じカテゴリー(プログラム)の記事画像
    JPEG圧縮を繰り返しても際限なく劣化するわけではない
    ゲームボーイの吸い出し機を作った (後編)
    ファミコンで全画面に任意の画像(ただしモノクロ)を表示
    PCのキーボードのアーウが反応しなくなったあどうすえばよいか
    ARMマイコンはじめました。
    SDカードから1セクタ読み取るまでの手順解説
    同じカテゴリー(プログラム)の記事
     JPEG圧縮を繰り返しても際限なく劣化するわけではない (2017-02-10 01:47)
     ゲームボーイの吸い出し機を作った (後編) (2017-01-16 22:44)
     ファミコンで全画面に任意の画像(ただしモノクロ)を表示 (2017-01-14 00:00)
     浮動小数点数の10進指数表示のアルゴリズム (2016-12-28 01:28)
     PCのキーボードのアーウが反応しなくなったあどうすえばよいか (2016-07-17 04:34)
     ARMマイコンはじめました。 (2016-05-28 14:43)
    URL欄を実験的に消してる間に廃止されてしまいました。まあいいか。
     
    <ご注意>
    書き込まれた内容は公開され、ブログの持ち主だけが削除できます。
    <?=$this->translate->_('削除')?>
    最近のWindowsのビットマップフォントの太字
      コメント(0)