セブンイレブンで日本酒を2018年10月11日 16:02


津田沼献血ルーム

献血をしに津田沼に。少し雨模様で、出足は少なめ。いつもは、少しゆっくりめの散歩をしながら帰るが、天気を見て方針転換。近所のイオンリカーが閉店して、地元の地酒が見つけにくくなったので、最寄りの酒屋を訪ねる。

セブンイレブン

京成津田沼駅からすこし。少々変わっていると有名なセブンイレブン。店先の幟がおかしい。

入ってみると、日本酒のコーナーはさすがの物量。後ろの泡盛コーナーも目を惹く。お目当ての千葉の地酒は見当たらないが、気になる品揃え。地域、酒蔵は、国内あちこちに散り、店主のお気に入りを取りそろえた感じ。有名処を網羅しているわけではない。趣味が合えば通いたくなる方向性。

日本酒のちらし

とりあえず、好みとは少々異なるが、有名処をお試しに一本。

代替フォントを避けてフォントの字体を確認する2018年10月11日 16:58

字体を確認するツールを作っているが、フォントが用意していない文字コードを指定すると代替フォントが表示され、混乱する。

代替フォントが表示された後、XAMLのFontFamilyを確認するも、指定したFontFamilyの値を返すばかりで、代替フォントであるかどうかの判別はできない。

探してみると、Win2DでCanvasFontFaceを取得すると、そこからUnicodeRanges属性が得られ、フォントが定義されているかどうか判別できそう。

CanvasFontFaceの取得

59行;システムで利用可能なフォント一覧の取得。
60行;フォント一覧のCanvasFontFaceの取得。
89行;UnicodeRangesの取得。

UnicodeRangesは、FirstとLastのペアの配列。First~Lastの範囲でフォントが定義されていることを示す。

UnicodeRangesの確認

行176;与えられたUnicodeについて、UnicodeRangesで定義された範囲内かどうかを判別。効率が悪いやり方なのはご容赦。
行170;与えられたUnicodeについて、UnicodeGeneralCategoryを取得し、未設定や記号を排除しているが、代替フォントがある場合は排除できない。ちなみに、漢字はOther Letterになる。

実際に文字を表示して確認

実際にツールを動かしてみたところ。「丙」の文字。U+4E14からU+4E19の範囲内にあり、フォントが定義されている。次は、U+4E1Eに飛ぶ。この範囲だが、かなり細切れ。UnicodeRanges配列の要素はかなり多い。

これで、ゴシックを表示していたら明朝が混じる、といったことを防ぐことができる。これで、ようやくWindowsアクセサリの「文字コード表」と同じところ。