Author Archives: AKIYAMA

2021-07-18 , ,

FontForgeでMeiryoKe_ConsoleとInconsolataをくっつける

これまでEmacsのフォント設定でASCIIはInconsolata、それ以外はMeiryoKe_Consoleを使うように設定していたのだけど、細かい調整が出来ないのでそれならばとFontForgeで一つのフォントに合成してしまうことにした。そうすれば細かい調整はFontForgeの方である程度行えるからだ。また、フォントサイズ(奇数サイズ)によって全角の幅が半角の幅のちょうど二倍にならない場合があるのもフォントを一つにしてしまえば解決すると思われた。ちなみにInconsolataは0に斜線が入っていて細身で綺麗なので長年使っている。MeiryoKe_Consoleを使っているのはぼやけたフォントが嫌いなのでヒンティングがしっかりしているメイリオでかつ等幅にしたものが欲しいからだ(ヒンティングには賛否両論あるとは思うが私はどちらかと言えば下手にアンチエイリアスしてぼやけたものよりもシャープな文字の方が好きだ。低解像度環境で細いフォントならば)。

ダウンロード先:

  • Inconsolata : Boldもダウンロードしておくと良い。さらにFontForge等で斜体版を作っておくとなお良い。
  • MeiryoKe : こちらもFontForgeで斜体版を作っておくと良い。
  • FontForge : 最新版にしたら常時カナロックがかかってしまう現象が発生した。IMEで半角変換して入力すればなんとか使える。最新の開発版では問題なかった。

合成する手順:

  1. Inconsolata側:
    1. FontForgeでフォントを開く。
    2. EMサイズを2048にする。「エレメント」→「フォント情報」→「一般情報」→「EMの大きさ」を「2048」にしてOKを押す。すると(「輪郭を拡大/縮小」にチェックが入っていれば)自動的にグリフが拡大縮小される。InconsolataのEMサイズは1000、MeiryoKe_Consoleは2048なので合成する前に合わせなければならない。
    3. ヒント情報・ヒント命令を削除する。「編集」→「選択」→「出力に値するグリフ」, 「ヒント」→「ヒントを削除」, 「ヒント→ヒント命令を削除」。MeiryoKe側に移したときにヒント命令は単純には引き継げないので削除する。
    4. ASCII文字(等MeiryoKe側へコピーしたい文字)のグリフを選択して右クリックし「参照を解除」。iとjがuni0307を参照していたりするのでこれを解除する。しないとコピーしたときにiやjの上の点がメイリオのものになってしまう。
    5. ASCII文字(等MeiryoKe側へコピーしたい文字)のグリフを選択して右クリックし「コピー」する。
  2. MeiryoKe_Console側:
    1. FontForgeでフォントを開く。
    2. フォント情報を書き替える。
      • PS Names
        • フォント名は「MeiryoKe_Inconsolata_スタイル名」等とする。
        • ファミリー名は「MeiryoKe_Inconsolata」とする。
      • 一般情報
        • (斜体なら)イタリックの傾きを傾けた角度にする。
      • OS/2
        • その他/Style MapをRegular, Bold, Italic, Bold Italicのいずれかに。
        • メトリック/WinDescentを360へ増やす(jの下が切れてしまうので。値はjやyの一番下の座標を見て決める)。
        • (斜体なら)Panose/文字の形状を「斜体/箱入」に。
        • TTF名のファミリー名、スタイル名、フルネーム等を適切に変更。
    3. ASCII文字(等Inconsolataから持ってきたい範囲)のグリフをカットして削除する。
    4. Inconsolata側でコピーしたグリフを貼り付ける(または、「エレメント」→「フォントの統合」で持ってきた方がトラブルが少ないかもしれない。少なくともアンカー情報はコピーだと引き継がれない模様。どちらを使うにせよすでにあるグリフには上書きされないので統合・コピーする前に取りこみたい箇所を消しておくこと)。
    5. フォントを出力する。「ファイル」→「フォントを出力」。 オプションはほとんどデフォルトだが、一応私が出力したときのを書いておく:
      • ヒント
        • Flexヒント
      • TrueType ヒント
      • PostScriptグリフ名
      • TrueType
      • オプション
        • OpenTypeの仕様
        • 旧来のkernテーブル(不要かも?)
        • Windows Compatible kern(不要かも?)
        • Prefer native kerning(不要かも?)
  3. 出力したフォントの平均文字幅情報を書き替える。平均文字幅(xAveCharWidth)はFontForgeが勝手に計算してしまうので設定で変更できない。半角文字の幅である1024にしたいのでバイナリエディタで書き替える。
    1. バイナリエディタで開いて先頭付近のOS/2という文字列を見つける。
    2. OS/2の後の4バイトはチェックサムなので無視し、次の4バイトが示すオフセットを読み取り(ビックエンディアン)、ファイル先頭からそのオフセットの場所に飛ぶ。
    3. 最初の2バイトはバージョン番号なので無視し、次の2バイトを1024(04 00)に書き替える。

メモ:

  • ○や■の記号などInconsolataから持ってきたくないものもあるのでASCIIのグリフだけInconsolataからMeiryoKe_Consolasにコピーした。
  • 変形は極力しない方が良い(特にMeiryoKe側は)。ヒント情報がどうなるか分からないので。
  • Inconsolataのiやjは他のグリフを参照しているので、「参照を解除」してから移すこと。でないとiやjの上ポチがずれた位置に出てしまう。参照先であるuni0307もコピーする手もあるかもしれない。
  • WinDescentを少し増やさないとjの下が切れてしまう。座標を見て 360 400にした。一般情報の「深さ」は変えなくて大丈夫。
  • 「エレメント」→「フォント情報」→「OS/2」→「Panose」→「幅の比率」が「等幅」だと全角文字の後に空白が空いてしまう。FontForgeのバグだそう(FontForgeで生成した日本語TrueTypeフォント文字幅広すぎ対策 - itouhiroはてなブログ)なので「等幅」のまま出力してxAvgCharWidthを別途書き替える。「任意」にすると一見問題が解決するように見えるが、フォントサイズが奇数のときに全角の幅が半角のぴったり二倍にならなくなる。例えば全角の幅が19pxにときに半角の幅が10pxになってしまう。「等幅」で出力して後でxAvgCharWidthを書き替えるとこの問題は起きない(フォントサイズ19pxのとき全角の幅が20pxになる)。
  • Emacsで使うとフレームの横幅が異様に大きくなってしまうことがある。(default-font-width)が大きな値を返してくる。これもxAvgCharWidthの問題。OS/2テーブルのxAvgCharWidthを書き替える必要がある。FontForgeは勝手に計算して出力するので設定で変更できない。
  • xAvgCharWidthの書き替え方:

    1. TTFファイルの中でOS/2テーブルの位置は、ファイル先頭付近の「OS/2」と書いてある所の直後を見れば分かる。「OS/2」の直後には32ビット整数(ビックエンディアン)でチェックサム、オフセット、サイズと続く。手元のファイルでは、オフセットは1D8hや1C8h等であった。このオフセットはファイル先頭からOS/2テーブル先頭までのバイト数。
    2. OS/2テーブル先頭からバージョン(uint16)、xAvgCharWidth(int16)と続く。手元のファイルでは xAveCharWidthは1959(7a7h)だった。これを1024(400h)に書き替える。

    (参考: OpenTypeフォント: vanillaの日記, OpenTypeフォントの続き(5)・・・OS/2テーブル: vanillaの日記, OS/2 - OS/2 and Windows metrics table (OpenType 1.8.4) - Typography | Microsoft Docs)

  • ヒント命令はコピーでもフォントの統合でも引き継げないのでInconsolataの分は諦める。大人しく消してしまった方が良い。各グリフのヒント命令(glyfテーブル)はフォント全体(fpgmテーブル)で定義している関数を呼び出したりしているので単純にグリフをコピーしても正しく動作しない。頑張って解析すれば統合できるかもしれないが大変。FDEF命令で定義する関数の番号をずらせれば統合できるかもしれない。CALLの前が必ずしも番号のPUSHとは限らないみたいなので慎重に追っていく必要がありそう。関連する他のテーブルにも注意を払う必要がありそう。(参考: OpenTypeフォントの続き(9)・・・インストラクション: vanillaの日記, TrueType Instruction Set (OpenType 1.8.4) - Typography | Microsoft Docs)
  • ハイフンマイナス(U+002D)がなぜか太く表示されてしまうようなので 縦110%拡大したら小さなフォントサイズでチルダの波形が波に見えない場合があったので、そのグリフだけはヒント情報とヒント命令を生成した。他の文字はヒント情報をFontForgeで自動生成すると文字の形や幅がおかしくなることがあった。
  • ベースラインが揃っていないのが気になる。元々メイリオ自体漢字や仮名は少しベースラインより下にはみ出してる。調整したいがメイリオ側を変形するのはヒンティングが大丈夫が不安。Inconsolataをベースラインより下げてしまうのも手かも?
  • なぜかInconsolata部分の高さが微妙に低い(ヒントがないせい?)ので縦方向に少し(110%ほど)拡大した。
2021-07-17 ,

指定した任意のorgファイルへエントリー(サブツリー)を移動する方法

org-refile (C-c C-w) でorg-modeのエントリー(サブツリー)を他の場所へ移動できるのだけど、デフォルトだとカレントバッファ内の第1レベルのエントリ内へしか移動できない。

移動先の候補は org-refile-targets 変数で変更できるのだけど、その場で好きなファイルを指定してその中へ移動というのは出来ないように見える。これまで org-refile-targets には (org-agenda-files :maxlevel . 2) を指定していたのでアジェンダ処理対象ファイルへは移動できるのだけど、特定のプロジェクト専用のorgファイル(あちこちのディレクトリにある)へ移動したい場合には困る。

やりたいことはシンプルに、C-c C-wの後にファイルを指定して、次に移動先のエントリーを指定したいだけなのだけど。

変数 org-refile-use-outline-path や org-outline-path-complete-in-steps を使うと最初にファイルを指定できるようにもなるけれど、やっぱり org-refile-targets の制限を受けてしまう。

これまではエントリーをカット&ペーストしていたのだけど、やはり C-c C-w で出来た方が便利だ。ちなみにペーストは任意のエントリーの子としてペーストする機能が見当たらずペーストしてからレベルを調整する必要があって手間がかかる。C-c C-x C-y (org-paste-special) は現在の場所と同一レベルにペーストするので M-right で一段下げなければならない。

どうにもならないのかと諦めかけたところ、次の記事を見た。

目にとまったのはこの部分。

org-refile-targets lets you control which files to consider, e.g.:

nil  ;; only the current file
'((org-agenda-files :maxlevel . 2)) ;; all agenda files, 1st/2nd level
'((org-files-list :maxlevel . 4)) ;; all agenda and all open files
'((my-org-files-list :maxlevel . 4)) ;; all files returned by `my-org-files-list'

org-refile-targets には任意の関数を指定できるのであった。その関数は移動候補となるファイル名のリストを返すことになっている。

(org-files-list) 関数はアジェンダファイルと現在開いているorgファイルを返すので、それを指定すればアジェンダファイルの他に現在開いているorgファイルへも移動できるようになる。

完全に任意のファイルとはいかないが、先にファイルを開いておけばいいだけなので当分これで我慢しておこうと思う。

2021-05-01

2021年春の新番組と視聴環境

さて、今期はどうでしょうね。

03/27(土) 17:30~ 日本テレビ 僕のヒーローアカデミア 第5期
03/28(土) 24:40~ NHK総合 赤ちゃん本部長
03/31(水) 24:00~ ニコニコ動画 ヘタリア World★Stars
04/01(木) 17:55~ テレビ東京 シャーマンキング 新作
04/01(木) 22:30~ TOKYO MX ゴジラ シンギュラポイント(Godzilla Singular Point)
04/01(木) 24:00~   天地創造デザイン部【特別編】
04/01(木) 27:00~ BS-TBS 歌うサッカーパンダ ミファンダ
04/02(金) 18:55~ NHK Eテレ もっと!まじめにふまじめ かいけつゾロリ 第2シリーズ
04/02(金) 22:00~ TOKYO MX SSSS.DYNAZENON(ダイナゼノン)
04/02(金) 25:23~ テレビ東京 灼熱カバディ
04/02(金) 26:25~ TBS ましろのおと
04/03(土) 08:00~ テレビ東京 カードファイト!! ヴァンガード overDress
04/03(土) 09:00~ NHK Eテレ おしりたんてい 新シリーズ
04/03(土) 12:00~   どすこい すしずもう
04/03(土) 22:30~ TOKYO MX Thunderbolt Fantasy 東離劍遊紀3
04/03(土) 23:30~ TOKYO MX Vivy -Fluorite Eye's Song-
× 04/03(土) 24:57~ TOKYO MX ダイナ荘びより
04/04(日) 09:30~ テレビ東京 マジカパーティ
04/04(日) 22:00~ TOKYO MX ドラゴン、家を買う。
04/04(日) 22:30~ TOKYO MX 憂国のモリアーティ 2クール目
04/04(日) 23:00~ TOKYO MX NOMAD メガロボクス2
04/04(日) 23:30~ TOKYO MX さよなら私のクラマー
04/04(日) 24:00~ TOKYO MX セブンナイツレボリューション -英雄の継承者-
04/04(日) 24:10~ NHK総合 キングダム 第3シリーズ ※第1話から放送再開
04/04(日) 24:30~ TOKYO MX 戦闘員、派遣します!
04/04(日) 25:00~ TOKYO MX 黒ギャルになったから親友とヤってみた。
04/05(月) 22:30~ TOKYO MX やくならマグカップも
04/05(月) 23:00~ TOKYO MX 恋と呼ぶには気持ち悪い
04/05(月) 24:00~ TOKYO MX ひげを剃る。そして女子高生を拾う。
04/05(月) 25:30~ テレビ東京 フルーツバスケット The Final
04/05(月) 26:00~ テレビ東京 オッドタクシー
04/06(火) 07:30~ テレビ東京 iiiあいすくりん 
04/06(火) 18:45~ NHK Eテレ ふしぎ駄菓子屋 銭天堂 新シリーズ
04/06(火) 23:00~ TOKYO MX 転スラ日記
04/06(火) 24:30~ TOKYO MX 聖女の魔力は万能です
× 04/06(火) 25:29~ 日本テレビ 擾乱 THE PRINCESS OF SNOW AND BLOOD
× 04/07(水) 18:45~ NHK Eテレ 宇宙なんちゃら こてつくん
04/07(水) 22:00~ TOKYO MX MARS RED
04/07(水) 23:30~ TOKYO MX 究極進化したフルダイブRPGが現実よりもクソゲ―だったら
04/07(水) 25:35~ TOKYO MX スーパーカブ
× 04/08(木) 23:30~ TOKYO MX Fairy蘭丸~あなたの心お助けします~
04/08(木) 24:00~ TOKYO MX ゾンビランドサガリベンジ
× 04/08(木) 24:55~ フジテレビ バクテン!!
04/08(木) 25:28~ TBS 異世界魔王と召喚少女の奴隷魔術Ω (第2期)
04/08(木) ~ Netflix 極主夫道
04/09(金) 18:25~ テレビ東京 妖怪ウォッチ♪(新シリーズ)
04/09(金) 19:25~ テレビ東京 新幹線変形ロボ シンカリオンZ
× 04/09(金) 25:25~ TBS すばらしきこのせかい The Animation
04/09(金) 25:50頃~ TBS 結城友奈は勇者である ちゅるっと! (ショートアニメ)
× 04/09(金) 25:55~ TBS BLUE REFLECTION RAY/澪
04/10(土) 22:00~ TOKYO MX スライム倒して300年、知らないうちにレベルMAXになってました
04/10(土) 24:00~ TOKYO MX 86―エイティシックス―
04/10(土) 24:30~ TOKYO MX シャドーハウス
× 04/10(土) 24:55~ 日本テレビ EDENS ZERO
× 04/10(土) 25:00~ TOKYO MX イジらないで、長瀞さん
× 04/10(土) 25:30~ テレビ朝日 バトルアスリーテス 大運動会ReSTART!
04/10(土) 26:00~ テレビ朝日 美少年探偵団
  04/11(日) 10:30~ テレビ東京 ミュークルドリーミー みっくす!
× 04/11(日) 25:35~ テレビ東京 東京リベンジャーズ
04/12(月) 22:50~ NHK Eテレ 不滅のあなたへ
× 04/12(月) 23:57~ TOKYO MX いたずらぐまのグル~ミ~
04/13(火) 22:29~ TOKYO MX SDガンダムワールド ヒーローズ
× 04/14(水) 24:55~ フジテレビ セスタス -The Roman Fighter-
× 04/14(水) 25:05~ TOKYO MX 幼なじみが絶対に負けないラブコメ
04/17(土) U-NEXT 新テニスの王子様 氷帝vs立海 Game of Future 後篇
04/17(土) 17:35~ NHK Eテレ 魔入りました!入間くん 第2シリーズ
04/28(水) ~ Netflix YASUKE -ヤスケ-

今期一押しはやっぱりスーパーカブ。とても丁寧な作りで大変好感が持てますね。私好みの話でもあります。ただ、退屈に思う人もいるでしょうね。幸薄そうな女の子が鼻につく人もいるかもしれません。個人的にはこの手の現実への適応、ちょっとした心の成長を描く話はもう少し男の子が主人公のものがあっても良いのではと常々。

他に数話見た段階で気になるのは:

他にもいくつか視聴を継続しているものはあります。

ところで今期から視聴の大半をネット配信に移行しました。というのもほとんどテレビが映らなくなってしまったからです。チューナーを変えてもダメなのでおそらくアンテナから部屋までのどこかに問題があるのではないかと思います。最近はほぼ全ての作品がネット配信されているのでほとんど困ることはありません。Abemaやニコニコの無料視聴もありますし、Prime Videoは元々見られますし、dアニメストアにも入ったのでそれでほぼ全て網羅できます。良い時代になったものです。

dアニメストアの月額440円は安すぎです。見逃してしまったりまた見たいと思っていた過去の作品もいくらでも見られます。以前カノープスのチューナーカードMTV2000が壊れたときに途中から見られなかった(続きが気になっていた)ファンタジックチルドレンと巌窟王をようやく見ることが出来ました。また見たいなと思っていた作品も色々見ています。真っ先に見たのはスケッチブック~full color's~でした。最終回付近で面白さに気がついて録画を残していなかったパターンです。まぁ、私好みですよね。

現状でいくつか見られないものもあるのですが、一番大きいのはNetflix独占ものです。正直1~2本の作品を見るためだけに入るのはコスパが悪い気がします。今期ならゴジラはMXで3話くらいまでかろうじて見られたので続きが気になっています。前期のBEASTARSも続きがみたいのですが。短い期間だけ入って後でまとめて見た方が良いかもしれません。