2014年1月27日月曜日

FontForgeマニュアル

昨年9月にも紹介したFontForgeですが、新しい場所で現在も開発が続いているようで、この記事を書いている時点の最新版の日付は2014-01-08でした。

FontForgeの古いマニュアルであれば日本語版があります。ユーザインターフェースが代わっていますが、日本語のフォントを作るだけなら推測しながら利用できると思います。

しかし、新しい合字や字詰めなどの機能が必要な場合には英語の資料を読むしかないようです。ただし、本家の英文資料も新しい合字や字詰め、とくにlookupの機能に関しては暫定版の感がぬぐいきれません。

さて、新しい資料「Design With FontForge」を作る作業も進んでいるようです。
http://designwithfontforge.com

この"Design With FontForge"のソースは他のFontForge関連のソースと共にGitHubに置かれています。https://github.com/fontforge

執筆作業は継続されているようですが、readme.mdに書かれたローカルでこの資料を読む方法が少し古くなっていました。

資料はMarkdownと言う軽量マークアップ言語で書かれています。Markdownで書かれた「Design With FontForge」のソースは以下にあり、ページにある[Download ZIP]ボタンを押せば入手できます。
https://github.com/fontforge/designwithfontforge.com

ダウンロードし解凍したMarkdownのファイルは好みの場所に置くことができます。MarkdownをHTMLに変換してローカルのWebサーバ経由で読めるようにするツールがJekyllで、Rubyで書かれています。Terminal.appでJekyllのインストールする命令はこの資料に書かれている通りです。
sudo gem install jekyll
しかし、Mac OS X MavericksではRDiscountパーサーのインストールも必要でした。
sudo gem install rdiscount
次に、Terminal.appのディレクトリを「Design With FontForge」のソースファイルを置いた場所に移動して、Jekyllのサーバ起動するのですが、その引数が変更されています。
jekyll serve
以上の命令の後で、Webブラウザで以下のURLでサーバに移動すると、「Design With FontForge」をローカルで読めます。
http://localhost:4000/

・・・とここまで、サイトに書かれている内容を実行したのですが、資料を読むだけのために毎回々々サーバを起動して.mdファイルを変換するのは面倒です。Markdownから変換済みのファイルがどこかにあるはずと思って調べてみると、「-site」というディレクトリが生成されて、その中に変換されたhtmlファイルが入っていました。

調べてみると以下の二カ所を修正すれば、図も含めて表示できました。修正はBBEditなどのエディタを使って一括変換ですみます。ただし、一部の図は本家のWebサイトでも用意されていないようです。
  1. _site/en-US/の下にあるhtmlファイル内の全ての「href="/」を「href="../」に置きかえる。
  2. _site/index.htmlを以下のように戦闘のスラッシュを消す。
    • window.location.href = "/en-US/index.html"
    • window.location.href = "en-US/index.html"

2014年1月25日土曜日

IndexedDBのブラウザ

IndexedDBのツールですが、データベースをブラウズするにはGoogle Chromeが標準で持っている開発ツールが良さそうです。

FirefoxにはIndexedDB Browser 0.1.4(作者: Ben Turner氏)というアドオンがありますが、残念ながらMac OS X Mavericks上のFirefox 26.0で試した限りでは動作しませんでした。

代わりに動作したのがSQLite Manager 0.8.1(作者: lazierthanthou氏)です(苦笑)データ ファイルは、~/Library/Application Support/Firefox/Profiles/の下をたどると拡張子が.sqliteのファイルがいくつか見つかります。ただし、インデックス関連のデータばかりで、データ本体を見つけることができませんでした。

Google Chrome(32.0.1700.77)は標準でデータベースのブラウズができます。ツールの場所は表示 > 開発/管理 > デベロッパー ツールまたはJavaScript コンソールを選択して、開いた画面内にあるタブからResourcesを選択し、左欄からIndexedDBを選択すれば、データーベースやobjectStoreなどが表示されます。

2014年1月22日水曜日

Indexed Database API

Indexed Database API(以下IndexedDB)はローカルにテキスト データを保存するAPIを提供しています。

また、簡単な検索方法も提供します。データ保存が主な目的で、規格策定が中断されたWebSQLのようなサービスは提供されていません。複数条件の検索やテーブルの結合などの利用はJavaScriptで処理する、と考えた方が良さそうです。

解説は日本でもネット上に色々ありますが、とりあえず以下のページを参照してみました。
IBM HTML5 の IndexedDB API を使用する

すぐにわかる間違いが一カ所ありましたが、記事の発表が2013年10月24日で比較的新しく、W3Cの規格を調べるときの参考になります。

記事では言及されていませんがこのページで提供されいるサンプルコードにはブラウザごとの違いを吸収する部分があります。Mac OS X上の以下のブラウザで試しましたが、この部分をなくしても動作しました。
Google Chrome バージョン 31.0.1650.63
Firefox バージョン 26.0

IndexedDBでは固定したフィールドではなく、JavaScriptのJSONをレコードに入れています。このためにインデックス指定したKey以外は、レコードごとに異なるKeyと値を設定できます。IndexedDBにはフィールドの概念がないため、データベースのように特定のフィールドだけを取り出せません。レコードごと取り出して、あとはJavaScriptで処理、と言う事のようです。

IndexedDBで検索できるのはインデックスのあるキーに対して、一つの条件に合致するか、条件の数値よりもキーの値が大きいか小さいか、指定した上限数値と下限数値の間にあるか、のみです。先にも書いたように複数の条件で検索するにはJavaScriptで処理した方が良さそうです。

こうなると、JavaScriptでテーブルの結合などリレーショナルデータベース風に処理するためのAPIが欲しくなります。その問合せAPIはやはり"SQL"でしょうか?(大笑)