#?SuikaWiki/0.9
[1] [DFN[JIS S 0032:2003 『高齢者・障害者配慮設計指針—視覚表示物—日本語文字の最小可読文字サイズ推定方法 (Guidelines for the elderly and people with disabilities — Visual signs and displays — Estimation of minimum legible size for a Japanese single character)』]]は、
その名前の通りのことを規定している規格です。
高齢者・障害者と書いてありますが、もちろん健常者にも適用できます。
(というかむしろ健常者対象のような気がする。)

> 序文 文字情報は[INS[・・・]]特に年齢とともに視力の低下する高齢者にとって読みづらい文字が表示されている場合が多い。
この規格は、標識、表示ラベル、パンフレットをはじめとする視覚表示物に用いる文字を設計する際の指針として、多様な文字の最小可読サイズを定量的に推定する方法を示したものである。[INS[・・・]]

> 1. 適用範囲 この規格は、若年者から高齢者までの任意の年齢の観測対象者 (以下、対象者という。) が、
様々な環境下で平仮名、片仮名、アラビア数字、及び漢字の日本語も字の1文字を読むことのできる最小の文字サイズの推定方法について規定する。
対象とする文字は、明るい背景に暗い文字で表示され、
かつ、白地に黒のような高いコントラストで表示された明朝体及びゴシック体の二つの書体であって、
標識、表示ラベル、パンフレットをはじめとする視覚表示物に用いるものとする。ただし、ドット式の電子ディスプレイで表示される文字は除く。[INS[...]]
> 備考1. この規格では、対象者を10歳から80歳までの任意の年齢の人とし、これらの対象者で視覚的病歴のない健常な人が80%の正答率で読み取れる最小の文字サイズが推定できる。

[[#comment]]

* 日本語文字の最小可読サイズ

[2] 5. によると、最小可読サイズは次のように推定できます。

= 輝度 100 cd/m[SUP[2]] における視力
[VAR[V[SUB[0]]]] [WEAK[(年齢 [VAR[A]] (才) と視距離 [VAR[D]] (m) に依存)]] を求める
= 実際の輝度で補正した視力を求める
=- [CODE(math)[[VAR[V]] := [VAR[k]][VAR[V[SUB[0]]]]]]
-- [VAR[k]] は輝度補正係数  [WEAK[(輝度 [VAR[L]] (cd/m[SUP[2]]) に依存)]] 
= サイズ係数 [VAR[S]] を求める
=- [CODE(math)[[VAR[S]] := [VAR[D]] / [VAR[V]]]]
=- [VAR[D]] は視距離 (m)。
= 最小可読文字サイズ [VAR[P]] (ポイント) を求める
=- [CODE(math)[[VAR[P[SUB[min]]]] := [VAR[a]][VAR[S]] + [VAR[b]]]]

[VAR[a]] と [VAR[b]] は、次の表によります。
,書体,用字系,[VAR[a]],[VAR[b]]
,明朝体,仮名・数字(・アルファベット),8.2,2.6
,明朝体,漢字 5〜10画(・1〜4画),9.6,2.8
,明朝体,漢字 11〜15画(・16画〜),9.6,3.6
,ゴシック体,仮名・数字(・アルファベット),6.4,3.0
,ゴシック体,漢字 5〜10画(・1〜4画),8.1,3.4
,ゴシック体,漢字 11〜15画(・16画〜),8.6,4.1

括弧内は参考。

[3] 視力 [VAR[V[SUB[0]]]] は
JIS S 0032:2003 付表 1 によります。
輝度補正係数 [VAR[k]] は同付表 2 によります。

[4] >>2-3 をもとに、計算する適当な script を書いてみました。
[[JavaScript]] です。
[PRE(JS)[
var ab = {
  minchou: {
    kana: {a: 8.2, b: 2.6},
    digit: {a: 8.2, b: 2.6},
    alphabet: {a: 8.2, b: 2.6},
    han5: {a: 9.6, b: 2.8},
    han11: {a: 9.6, b: 3.6}
  },
  gothic: {
    kana: {a: 6.4, b: 3.0},
    digit: {a: 6.4, b: 3.0},
    alphabet: {a: 6.4, b: 3.0},
    han5: {a: 8.1, b: 3.4},
    han11: {a: 8.6, b: 4.1}
  }
};


function V0 (A, D) {return 1}

function k (L) {return 1}

function pmin (A, D, L, font, script) {var V = k(L) * V0 (A, D); var S = D / V; return ab[font][script].a * S + ab[font][script].b}

WScript.echo (pmin (30, 1, 0.5, 'minchou', 'han11'));
]PRE]

表1・2 を用意するのが面倒なので (plain text で提供してくれればなあ)、 [VAR[V[SUB[0]]]] も [VAR[k]] も 1 にしてしまってます。

一番最後の一行だけ、 [[WSH]] に依存しています。
Windows をお使いの方は
[SAMP(file)[pmin.js]] とでも名前を付けて適当に保存して、
実行してみてください。

([VAR[V[SUB[0]]]] と [VAR[k]] がないと何の面白みもないな。)

[[#comment]]

* 日本語文章の読みやすさ

[5] 『附属書 1 (参考) 日本語文章の読みやすさ評価方法』 
では、読みやすさを評価する式が規定されています。

= サイズ係数 [VAR[S]] を >>2 により求める
= 相対文字サイズ [VAR[P[SUB[[VAR[S]]]]]] (ポイント) を求める
=- [CODE(math)[[VAR[P[SUB[[VAR[S]]]]]] := [VAR[P]] / [VAR[S]]]]
-- [VAR[S]] は文字サイズ (ポイント)
= 文字サイズに対する読みやすさ評価値 [VAR[R[SUB[[VAR[S]]]]]] を求める
=- [CODE(math)[[VAR[R[SUB[[VAR[S]]]]]] := 0 (0 ≦ [VAR[P[SUB[[VAR[S]]]]]] < 4)]]
=- [CODE(math)[[VAR[R[SUB[[VAR[S]]]]]] := 6 log [VAR[P[SUB[[VAR[S]]]]]] − 3.7 (4 ≦ [VAR[P[SUB[[VAR[S]]]]]] ≦ 30)]]
=- [CODE(math)[[VAR[R[SUB[[VAR[S]]]]]] := 5 (30 < [VAR[P[SUB[[VAR[S]]]]]])]]
= 文字間余白に対する読みやすさ評価値 [VAR[R[SUB[[VAR[C]]]]]] を求める
=- [CODE(math)[[VAR[R[SUB[[VAR[C]]]]]] := −0.175 [VAR[C]] / [VAR[P[SUB[[VAR[S]]]]]]]]
-- [VAR[C]] は文字間余白 ([[em]])
= 行間余白に対する読みやすさ評価値 [VAR[R[SUB[[VAR[N]]]]]] を求める
=- [CODE(math)[[VAR[R[SUB[[VAR[N]]]]]] := 0.844 [VAR[N]] [SUP[−0.012[VAR[P[SUB[[VAR[S]]]]]] + 0.33]]]]
-- [VAR[N]] は行間余白 (em)
= 全体の読みやすさ評価値 [VAR[R]] を求める
=- [CODE(math)[[VAR[R]] := [CODE(math)[[VAR[R[SUB[[VAR[S]]]]]] + [CODE(math)[[VAR[R[SUB[[VAR[C]]]]]] + [CODE(math)[[VAR[R[SUB[[VAR[N]]]]]]]]

,[VAR[R]],評価
,"[4.5, 5.0]",非常に読みやすい
,"[3.5, 4.5)",やや読みやすい
,"[2.5, 3.5)",普通
,"[1.5, 2.5)",やや読みづらい
,"[0.5, 1.5)",非常に読みづらい
,"[0.0, 0.5)",読めない


[6] [Q[log]] の定義が書いてありませんけど、
[[自然対数]]でよいのでしょうか。

