2013年8月29日木曜日

Windows の TeX Live 2013 でヒラギノフォントを埋め込む方法

学会の投稿論文ではしばしばフォントの埋め込みを指示されることがあります.これは結構な頭痛の種でしたが,TeX Live 2013 からは kanji-config-upd というコマンドが用意されていて容易く埋め込み設定を行うことができるようになりました

Windowsの場合,

kanji-config-updmap status

というコマンドで利用可能な選択肢を確認すると,インストールされている Adobe 製ソフトウェアに依存しますが

CURRENT family : noEmbed
Standby family : ipa
Standby family : ipaex
Standby family : kozuka
Standby family : kozuka-pr6n
Standby family : ms

という感じの結果が得られると思います.
この中でライセンス的に確実に安全な選択肢はIPAフォントですので,見た目に拘らないならこれを使うべきです.
小塚フォントは Adobe のソフトウェアと一緒にインストールされていることが多いですが,フォントデータが再利用可能な形で配布してはいけないことになっているので,PDFに埋め込んで配布すると咎められる可能性があると思います.
MSゴシック/MS明朝に関してはフォントの埋め込み可能フラグが立っているので埋め込みを行って良いように思われますが,埋め込んだPDFの利用に関する明確な許諾範囲がネットではみつかりませんでした.また,見た目に関しても Macに標準で付属しているヒラギノフォントに比べるとちょっといけてない気がします.

埋め込み可能なヒラギノフォントの入手

というわけで,たいへんニッチな話題ですが,Windowsでヒラギノフォントを埋め込んだPDFを作る方法についてメモしておきます.
まず,ヒラギノフォントの入手方法ですが,僕は「一太郎2012承 プレミアム版」のバンドル品として入手しました.一太郎以外のソフトでも利用可能で,商用・非商用を問わずサブセットであれば埋め込んでよいと明記されているので安心です.
通常の手段で購入する場合はモリサワのセレクトパックなどで購入することになると思いますが,その場合は結構なお値段(Macより高いかも?)になるので 基本7書体パック の方を amazon とかで買ったほうが費用対効果が高いかもしれません.なお,Macに付属のフォントをWindowsにコピーすることは禁じられているはずなので注意してください.

ヒラギノフォントを利用可能にする設定

TeX Live 2013 にはヒラギノフォント用の設定が含まれていますが,Mac付属のものを前提としたものであり,一太郎バンドルのものを扱うには設定が必要です.
具体的にはフォントファイルのファイル名が異なるので,そのままでは認識してくれません.

この問題を解消するためには,c:\texlive\texmf-local\fonts\opentype\public\hiragino というフォルダを作成し,管理者権限でコマンドプロンプトを起動して以下のようなコマンドを入力します.

cd c:\texlive\texmf-local\fonts\opentype\public\hiragino
mklink HiraKakuProN-W3.otf "C:\Windows\Fonts\ヒラギノ角ゴ ProN W3.OTF"
mklink HiraKakuProN-W6.otf "C:\Windows\Fonts\ヒラギノ角ゴ ProN W6.OTF"
mklink HiraKakuStdN-W8.otf "C:\Windows\Fonts\ヒラギノ角ゴ StdN W8.OTF""
mklink HiraMaruProN-W4.otf "C:\Windows\Fonts\ヒラギノ丸ゴ StdN W4.OTF"
mklink HiraMinProN-W3.otf "C:\Windows\Fonts\ヒラギノ明朝 ProN W3.OTF"
mklink HiraMinProN-W6.otf "C:\Windows\Fonts\ヒラギノ明朝 ProN W6.OTF"

これによって TeX が認識するシンボリックリンクが作成されます.(ちなみに mklink コマンドが存在するのは Vista 以降の Windows です.)
その後,管理者権限ではない TeX Live のコマンドプロンプトで

mktexlsr
kanji-config-updmap status

と入力すると

CURRENT family : noEmbed
Standby family : hiragino-pron
Standby family : ipa
Standby family : ipaex
Standby family : kozuka
Standby family : kozuka-pr6n
Standby family : ms

のように表示されているはずなので

kanji-config-updmap hiragino-pron

と入力すると,ヒラギノフォントが埋め込まれるようになります.


2013年8月17日土曜日

Android タブレットで倒立振子

突然ですが,諸般の事情で Android タブレット(Nexus 7)を制御器としたセグウェイっぽい自走式倒立振子を作りました.忘れないうちに製作の要点をメモしておきます.後日気が向いたときに詳細な記事を書くかもしれません.
Android タブレットは内蔵するジャイロセンサで角速度を計測し,モータに印加する制御入力の計算を行います.腕のように見えるのはレゴブロックで作られたバンパーで転倒時と机からの落下時に液晶画面を守ります.

IOIO-OTG と HUB-ee Wheel による製作容易なハードウェア

ハードウェア的に特に重要な部品は IOIO-OTG と HUB-ee Wheel です.


上の写真が IOIO-OTG で,これを介して Android からモータを駆動することができます. いわゆる ADK と似たような機能を持ちますが小型であることをはじめとして,様々な面で扱いやすいと思います.


上の写真は HUB-ee Wheel で,一見タイヤに見えますが中にモータ・モータドライバ・エンコーダを内蔵している便利部品です.エンコーダがかなり粗く(4逓倍で128カウント/回転)カウンタを内蔵していない点が少し残念ですが,レゴブロックと簡単に結合でき,ハードウェアの製作を飛躍的に簡単にしてくれます.

また,今回は適当な Nexus 7 専用ケースに両面テープで電池などの部品とレゴブロック2本を接着し,あとはレゴブロックを嵌め合わせることで HUB-ee Wheels を固定し,バンパーなどを構築しています.


制御器の連続時間実装

ソフトウェア,つまり制御理論の面でやや特殊なのは制御器の連続時間実装を行っている点です.というのも,Android は非リアルタイムOSで一定周期でのジャイロセンサによる計測や制御入力の更新が困難だからです.実際 IOIOLib Application Framework で何も考えずに制御ループを回したときの実行間隔は以下のようになります.


概ね 5 ms 程度の間隔でループが回っているものの 20 ms 以上の間隔になることもしばしばあり,離散時間システムとしての実装には多少無理があることがわかります.

倒立振子のモデリングと制御器の設計は特に特殊なところはありません.

今後の課題

現状では IOIO-OTG がエンコーダのカウントをサポートしておらず,Androidのソフトウェアによる計数を行っているので,高速に移動したり制御周期が長くなったりするとエンコーダの取りこぼしが発生してしまいます.

本来なら Android 端末を使った自走式倒立振子のメリットとして,カメラやネットワークを簡単に利用できることが挙げられるべきですが,この問題のために制御周期への影響が大きいと考えられるこれらの機能が使いにくいのが残念なところです.

本格的に遊ぶためにはエンコーダ用のカウンタ回路を IOIO-OTG の外部に設けるべきであると考えられます.