投稿

2015の投稿を表示しています

書体見本誌をTeXで連結して作った話 (TeX/LaTeX Advent Calendar 2015)

イメージ
この記事は、TeX & LaTeX Advent Calendar 2015 11日目の記事です。
昨日はabenoriさん、明日はaminophenさんです。



わたしとTeX TeX未経験でした。実は現在もTeXが書けません。必要な機能をWebから拾ってきて、スクリプトにしたあとはすべて忘れてしまったからです。
だからこの記事は備忘録ですらなく、TeXコミュニティの皆様に、TeXが使えないTeX無関係者はこのようにTeXを"使う"んですよ、多分。とご報告させて頂ければと思った次第です。



TeXを何に使ったか RuneAMNというフォント製品で、書体見本誌の生成に使いました。
ざっくりと説明しますと、RuneAMNはイラスト・デザイン向けのルーン文字フォントです。
project daisy bellがリリースしており、フリー版と製品版があります。




TeXを使ったのは、RuneAMNフォントの書体見本誌の作成作業です。
RuneAMN_Freeリリース後、諸事情により作ったRuneAMN_Proを販売開始するにあたって、書体見本誌が存在することは重要でした。

特に重要な点は、RuneAMN_Proフォントは計画当時から2015年現在までPixiv/BOOTHおよびGumroadて有償で販売されているデザイン製品であることです。
公開・添付される書体見本誌も、本物のデザイナ・イラストレータが1600円を払う価値を認めてくれる、本物の書体見本誌でなければいけません。
トレッキーなギークがプログラマ向けに作るAPIドキュメントのようなものでは駄目なのです。
無地か灰色を背景に使い、コードが読みやすいという理由で等幅なConsolas書体を選び、小さな黒文字で書かれたドキュメントをKISSにつき良し、とするわけにはいきませんでした。(私はそちらのほうが好みなので、少しそういう要素を残してありますが)


計画は単純です。
・書体見本誌は2冊作る
・それぞれ、製品に付ける「完全版」と、購入を検討してもらうための「プレビュー版」
・当然ながら表紙などは2冊の間で異なる
・完全版は全文字見本として収録するが、プレビュー版は文字数を絞る
  (書体をコピーして使われるのを、回避しておく)
・RuneAMNに含まれる10を超えるフォントすべての書体見本に、同じデ…

Gtk3でメニューバーを作成する

イメージ
Gtk3アプリケーションを作るにあたって、メニューバー(Menu)を作った際のまとめです。

用語 GtkではこれらのMenuの機能・要素を、以下のように呼びます。
“Mnemonics”
(ex. "(F)ile > (Q)uit"),
Alt+キーでMenu階層をたどることができる。
Windowsの場合アクセスキー。
またはこれを指してアクセラレーションキーと呼ぶこともある。

“Accelerators”
(ex. "Ctrl+Q")
他に、
MenuBar
MenuItem
SubMenu
などがあります。

既存の公式サンプルコードについて
gtk3-demoにコード付きのmenusサンプル があります。
( sudo apt-get install gtk3-demo -y )

しかし、gtk3-demoのmenusサンプルには、以下の問題があります。
・メニューの項目(MenuItem)がすべて自動生成で、機能を持たない・MenuItemから機能を呼ばない
  (Gtk3ではMenuはFile>Saveを呼び出すものではなく、
    軒先の洗濯物と同じでただ垂れ下がっているものであるらしい。)
・サンプルにはプレーンなMenuItemが含まれていない。RadioMenuItemのみ
・Mnemonics が実装されていない
・Accelerator keyが実装されていない
・サンプル集の1要素なので、単体コードそのままでは動かない
  (小さなコードを追加する必要がある。)
・Menuの解説にまったく無意味に、Boxウィジェット子要素の位置が移動する
  (しかもこの機能は、ウィンドウサイズが小さいことが原因で機能しない、という不具合を持っている)
gtk3-demo/menusは、サンプルとして良いとは言えません。

また、Gtk+にもサンプルコードが含まれていますが、古いGtkで書かれており参考になりません。
(` git clone --depth=1 git://git.gnome.org/gtk+ ` にて入手できます。 )

仕方がないので、menusサンプルやGtk3ドキュメントを読み解いて、自分用のサンプルを作りました。
とりあえず、gtk3-demoが持っている上記の問題は解決…

Gtk3でWindowに背景色を設定する

イメージ
現在、Gtk3を使ってウィンドウアプリケーションを作成しています。
ところで、Gtk3ではWindow背景色の指定方法が面白いことになっていました。
(Gtk3を使う側からすれば、あまり笑ってもいられなかったですが。)




Gtk2までは、背景色の変更は以下の一行で済んでいました。
gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &color);
(-> is deprecated)

上の関数は非推奨(deprecated=将来廃止)になっており、代わりに使うよう紹介されている新しい関数が、こちらです。
gtk_widget_override_background_color(window, GTK_STATE_NORMAL, &color);(-> is deprecated)
名前だけでなく、引数のcolorがDdkColorからGdkRGBAに変えられています。

面白いのはここからです。
ドキュメントを見ればわかるように、Gtk3ではこの関数も非推奨になっています。
代わりに『GtkStyleProviderを使って上手いことやれるようになりました!』とのこと。

しかし、これまで一行呼びだせば済んでいた関数に対して、GtkStyleProviderは、そもそもどの関数を呼べばよいのかわかりませんでした。
(多分setと名前に付いているやつだろう。しかし何を引数に渡せば背景色が変わるんだ?)
gtk3-demoを探しても、シンプルでコード量の短い背景色変更のサンプルが見つかりません。
仕方なくGtkのMailingListに質問を投げたところ、
Q:『もっと簡単な方法とか、CSSな方法のサンプルコードとかありませんか?』
A:『現在のGtk3で背景色を指定するにはCSSを使う以外の方法はない。あと過去ログ読め』
との返事が帰ってきました。
(こちらがそのやり取り)

実は、質問とは別に親切な方からメールが来て、その返答によれば「私が書いたサンプルがここにあるから参考にしてね」とのことでした。
(多分過去ログとの重複でMLが汚れるのに配慮しつつ、気を回してくださったのだと思います。感謝。)
そのURLはこちら:
http://www.gtkforums.com/viewtopic.php…

gtk3によるマウスカーソルの変更(落とし穴と解決策)

イメージ
gtk3を導入してアプリケーションを書いています。
アプリケーション上で表示するマウスカーソルのアイコンを変更しようとして、落とし穴にはまったので、原因と解決策を紹介します。
(原因、というほど大げさなものではありませんが)



現象としては、gdk_window_set_cursor()関数を呼んでも、マウスカーソルのアイコンが変更されず、機能しません。

出現するエラーメッセージは以下。
コマンドライン実行すると確認できます。
(PhotonVector.exe:19302): Gdk-CRITICAL **: gdk_window_set_cursor: assertion 'GDK_IS_WINDOW (window)' failed

で、原因ですが、
『gtk_widget_show() または gtk_widget_show_all()を呼ぶ前に、
マウスカーソル変更のgdk_window_set_cursor()を呼ぼうとすると、
引数に必要なGdkWindowを正常に取得できていないため、変更に失敗する』
ということのようです。

Sample Source 以下がサンプルソースです。
マウスカーソルのアイコン変更が機能することを確認できます。
落とし穴である不具合は、下のマウスカーソル指定をコメントアウトして、上のコメントアウトを解除すると再現を確認できるはずです。


環境はUbuntu15.10-amd64です。
なお、ライブラリ導入はこちら。
sudo apt-get install libgtk-3-dev -y
Makefileにしてしまったので、ビルドコマンドは記載できませんが、
pkg-config --libs --cflags gtk+-3.0
を絡めることになるかと。良いかんじに作ってください。

サンプルソースの動作が確認できれば、あとは任意のGdkCursorを生成することで、マウスカーソルを思い通りの画像に変更することができるはずです。

===
#include <gdk/gdk.h>
#include <gtk/gtk.h>

int main (int argc, char **argv){
    gtk_init(&argc, &argv);

    GtkWidget *w…

アイリスオーヤマ加湿器SHM-100Uレビュー (取り外し写真あり)

イメージ
写真は加湿器を裏側から撮ったものです。
以前から冬場は体調を崩しやすく、今年も冬が近づくにつれて、足の一部で肌荒れが出て痒くてたまりませんでした。薬を塗っても効果が薄かったため、今年は加湿器を購入することにしました。
加湿器は、効果が無かったり壊してしまったりしても良いよう、安価な加湿器の中から、 「アイリスオーヤマ 加湿器 加熱式 アロマ対応 グリーン SHM-100U
を選びました。
なお自室は、小さな鉄筋マンションの一室です。

箱を開けると加湿器は紙製の支持材に入っています。
取り出して確認すると、電源スイッチは裏側にあることがわかります。
表にあるLEDで光っているボタンは「リセットスイッチ」であるようです。

Web上のレビューによると「周辺が濡れる」という話があり、100均で適当な受け皿を買おうかとも思ったのですが、調度良いものが加湿器と一緒に入っていることに思い至りました。
(※火災の危険などあると思います。責任は持ちません。)

購入当初、裏側のリセットスイッチを使う頻度がわからなかったので、裏側の電源スイッチを表に置いて運用したら良いのではないかと思いました。今はまだそうしています。
しかし、一晩運用するなら翌朝には自動停止しており、電源スイッチではなくリセットが必要になるので、正面に置いて電源は付けっぱなしにするのが良さそうです。
推奨する使い方ではないのだと思いますが、動作させながらタンクを外して水を足すこともできます。私は慎重にやらないと周囲に水を撒いてしまいますが。

タンクは金属バネとゴム蓋による単純な仕組みです。台座の出っ張りからタンクの蓋を押し上げて開け、そこから重力で自然に給水する仕組みです。


実際の使用時間ですが、私の環境では公称の8時間よりすこし短い時間で水タンクを使いきっているように思います。
しかし、とりあえず一晩使うには、寝る前にセットしておけば、朝起きた時にはタンクの水をを使いきって止まっているので、それはそれで便利です。
空気が乾いているかどうかは、私には体感ではわからないので、なんとも言えません。
しかし8時間弱動いていれば、9時間睡眠でもほとんどをカバーできるので、加湿器が常に動いていないと困る体質の方ということでなければ、この加湿器は良いと思います。

=======


複数画像の一括リサイズをコマンドラインで行う最小コマンド(ImageMagickのみ)

イメージ
複数の写真画像をリサイズする作業はたまに発生します。
Linux環境だと特に、コマンド一発での処理を考えます。その度にGoogle検索でImageMagickの使い方を調べて、上位サイトの紹介するオプションを継ぎ接ぎしてい使っていたのですが。
毎回調べるのは面倒なので、覚えられるよう最低限の長さにまとめました。

本当に最低限は以下。
mogrify -resize 800x *.JPG
それなりに必要性のあるオプションを追加して、以下を覚えると良いです。
mogrify -strip -format jpg -quality 90 -resize 800x *.JPG





明度調整などのマトモな画像加工は諦めましょう。またはその都度調べましょう。
既にパイプを使いこなしているなら良いのですが、find,grepをパイプしてxargsで流しこむ、なんて流れを画像変換のためだけに覚えるのは面倒かと思います。
Gimpがコマンドラインからシェルスクリプトで使えたりすればよかったのですが、あちらは魔窟なので。
画像リサイズ程度の要望は、可能な限りImageMagickで処理。


以下解説。

mogrify
どう考えても同じImageMagickで"convert"のほうが覚えやすいですし、mogrifyでは通常は元ファイルが上書きされてしまいます。しかしconvertでは出力ファイル名が元ファイルを紐付けられない変なものになるので、すっきり諦めてmogrifyを覚えましょう。
なお、上書きには対象画像ファイルをまとたフォルダごとコピーして元画像をバックアップすることで対応します。下手に追加のコマンドを覚えるよりはるかに楽です。

-strip
EXIF情報を切り落とすオプション。ファイルサイズへの影響はともかく、当然付けておきます。

-format jpg
元ファイルが何JPGなのかわからないので標準的なjpg形式に。
format指定で拡張子が変更になる場合、元ファイルが保持されるという嬉しい副作用もあります。

-quarity 96
デフォルト92だという話ですが。デフォルト値があるならそれを使ったほうが良い派なのですが。これに関しては、写真によっては激しく劣化することがあったので。

-resize 800x
縦横比を保持するために横サイズのみ指定。お約束…

Ubuntu14.04ネットワークブート(pxe-pdhcp環境構築)

イメージ
既にDHCPサーバがある環境で、DHCPとは独立したPXE Bootサーバを立てることができるpxe-pdhcpというソフトウェアがあります。今回はpxe-pdhcpで、Ubuntu14.04をディスクレスで起動させるまでの備忘録です。

PXE Bootによるネットワークブート環境を持っておくと、HDDを乗せないディスクレスクライアントを用意したり、ディスクドライブ無しでUbuntuなどのインストールができて便利です。



なお、ネットワークブート環境を構築したのは、10インチノートPCであるN10Jcを、Ubuntu14.04-32bitで動作確認するためです。
(N10Jcは、EeePC的ノートPCでありながら、nVidiaのGPUを搭載している珍しい機体です。
一方で搭載CPUが比較的初期のAtom N270であり、32bit版OSしか動作しないため、他PCを64bit環境で統一していると、現在では運用が少しめんどうな機体でもあります。)
こちらが、PXEでディスクレス起動するゲストPCになります。

PXEサーバとなるホストPCは、普通の64bitシステムです。(Ubuntu15.04-amd64)


こちらのブログのSadayuki Furuhashi氏が書いたpxe-pdhcpを使用します。
http://frsyuki.hatenablog.com/entry/20070926/p1

基本の手順は、11.04での設定・手順を紹介しているこちらから。
http://kimamahitori.blog.shinobi.jp/Entry/317/
UbuntuディスクISOのマウントなどはこちらを参考にしました。
http://blog.akagi.jp/archives/3391.html
なお、こちらで紹介されているのはサーバUbuntu版で、今回ネットワークブートさせたデスクトップ版とはディスク内の構成が違う模様です。
今回はデスクトップ版(LiveCD)の設定・起動方法を扱います。

ネットワークブートの設定手順 tftp 最初にpxeのディレクトリを作成します。
書き込み権限を付けておいたほうが、あとの作業が楽です。
mkdir /pxe
sudo chmod a+rw /pxe

ftpサーバを導入します。
sudo apt-get install -y inet…

Inkscapeのコードを読む 使用library一覧

イメージ
現在、Inkscapeのコードを読もうと格闘中です。
今回は、ざっくりとInkscapeで使用しているライブラリの概要と一覧を作ったので、貼っておきます。



まず間違いなく使用ライブラリを網羅していないので、これがすべてではありませんが。
とりあえずInkscapeのソース中に直接取り込まれていて、目に付いたものを記載しています。
幾何学関連で実績のあるオープンソース・ライブラリの良い一覧くらいにはなるかと。

Inkscapeソースコードの取得 まずはInkscapeのコードを取得しましょう。
公式WikiのUsing a centralized (SVN-like) workflowを読みましょう。
http://wiki.inkscape.org/wiki/index.php/Working_with_Bazaar#SVN-style_checkout
ざっくり解説すると、Inkscapeはリポジトリにbazzer(bzr)を使っていて、ソースコードは以下のコマンドで取得できます。
bzr checkout lp:inkscape
bzr update


## libavoid License:GPL
object-avoiding connector routing for use in interactive diagram editors.
http://www.adaptagrams.org/documentation/libavoid.html

## libcola License:MIT
constraint graph layout(制約グラフ)
http://marvl.infotech.monash.edu/webcola/
を見るとjs版のサンプル画像が見れる。
https://github.com/mjwybrow/adaptagrams
によると、libavoidなどと同じチーム(?)の制作。

## libcroco License:LGPL
Libcroco is a standalone css2 parsing and manipulation library.
https://github.com/GNOME/libcroco
http://lfsbookja.osdn.jp/BLFS/svn.ja/general/libcroco.html

## lib…

libvorbisで.ogg音声ファイルをデコードする(memo)

イメージ
vorbis形式の音声ファイルを再生するコードを書こうと思った際のメモです。
勿体なかったので公開。
書いたのは、vorbisをPCMデータに変換するまでです。
音を出していないので、正しさを確認していない&中途半端です。

PCM形式でメモリに置くまで試して、PCMデータのサウンド出力は実際に試さずに放置していました。

さらに、同じ内容で微妙に違う2記事を適当に統合したので、重複や間違いがあると思われます。


Gstreamer
libvorbisで、(ogg) vorbisファイルをデコードしてメモリ上にPCMデータを作るサンプル
Gstreamerで 、メモリ上のPCMデータを出力するサンプル
を組み合わせて、
Ogg VorbisファイルをPCMデータにしてからGStreamerに投げることを目指す

こんなことをしなくても、
GStreamerにファイルを渡せばOggVorbisのデコードまでしてくれるが。

わざわざこんなことをする理由は、
・Ogg Vorbisファイルがデコードできていることを確認したい。
・ネットワーク音声転送するにあたって、GStreamerにメモリ上の音声データを直接渡す方法を知っておきたい。

ネットワークを通すということは、ストリームでありバイナリデータ。
GStreamerにも音声伝送用のサーバ・クライアントはあるが、暗号化をかけるのが面倒そう&画像と音声以外を送るためにできていない。





PCM形式が使われるらしい。
(libvorbisもデコード時にPCM変換を行っている)

メモリ上にPCMデータを用意する
Gstreamerにメモリを読ませる。
Gstreamer内部形式に変換させる
出力まではGstreamr

なお、GStreamerの出力デバイス自動指定(autoplay)を使うので、これを指定して音が出ることが前提です。





libvorbis(libogg)とサンプルのコンパイル ソースを入手するには、公式サイト http://www.xiph.org/downloads/ から圧縮ファイルかリポジトリを探します。
今回はGitリポジトリを使用しました。
公式サイトには、さらにサンプルコードとその解説が用意されています。

どなたかが日本語訳してくださったFAQによると、libvorbisを使用するには、libo…

オープンソース・ソフトウェアプロジェクトの寄付先リスト(2013年版)

イメージ
2013年あたりに作ったメモ。
捨てるのも勿体なかったので公開。
今では歴史的価値すら無いかもしれませんが。

もっと高額を寄付している人はいくらでもいますし。
あくまで少額寄付のススメとして。
もろもろの葛藤は「やらない善よりやる偽善」ということで。
とりあえず最大合計1万円を目安に、割り振っていきました。

選考基準 このソフトウェアに値段を付けるとこれくらい、という意味ではありません。日頃の利用率とも比例していません。

とはいえ。これが2015年現在であったなら、FontForgeに寄付しないではいなかったはずです。(とても使っているので)

注意 リンク先URLは参考程度に。いつURLが変わるとも限りませんし、リンク先が本物だと保証もできないからです。
「寄付のページがあるんだな」と確認するにとどめて、公式ページから寄付先を探してください。

2013/07/10にGoogleで見たら、1USD100.5円でした。
なので、1ドル100円換算とします。


Linux 500円
「カードorPayPal」で可能。
linuxfoundation.orgのDonateページ

まずはLinux。one time(一回きり)の方。割合としても少額ですが。
カーネルに重点を置いて寄付したいのですが、LinuxFoundationに入れておけばよいのかちょっと悩みます。
この寄付ページは検索で簡単に見つかります。

PayPalアカウントが使えなかったので、
「Don't have a PayPal account?
Use your credit card or bank account (where available). Continue
の方へ。いろいろ入力しました。

GIMP 2000円くらい
PayPal、Bitcoinほかで可能。
Donateページ

2.8になって手ブレ補正がつき、イラストが描きやすくなりました。
Linuxデスクトップを使っていて画像編集したい場合に、オールインワンかつ必須のソフトウェアだと思います。

GNOME Foundationへの寄付になるようなので、コメントに(下手な英語で)「可能ならGIMP、またはGNOMEのソフトウェアプロジェクトへお願いします」と書いておきました。あくまで、他のプロジェクトへ回ってもOKという気持…

RSSフィードをPHPで書かせた際のメモ

書きかけの汚いメモです。捨てるのも、もったいなかったので。

firefoxでダウンロードされる不具合。
.rdfではなく.xmlにするとダウンロードされない。

.rdfをxmlとしてApacheに設定すればよい(ダウンロードされない?)のだけれど、基本設定は変えられるとは限らないので、できるだけいじらない方針。(レンタルサーバへUpしたことがないので予防検疫的にコーディング。)

PHPでheader()を吐けば良いらしいけれど、RSSのURLが呼び出されるたびにPHPでRSSを生成させたり、生成済みファイルにheader()を付与するためだけのPHPファイルを追加したくなかった。

RSS自体の書き方。
RSS2.0で画像・リンク有り概要を実現する「<content:encoded>」を使う
そのまま使うとRSSリーダ(Liferea)がエラー。リンクからRSSを開くとFirefoxもエラーを吐く。
検索で上手く見つからず、考えた結果、自己解決。
RSS拡張するだけではダメ。(<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">の追記だけではダメということ。)
結論:CDATAセクションで囲む。
<description>もこれで囲んであった。

以上。

ルーン文字フリーフォント集 手書き風の新フォントを追加

イメージ
ルーン文字フリーフォント集のRuneAMN_SeriesFonts に、新書体として KnifeAフォント および KnifeArフォント を追加しました。
楔文字(くさび文字)を起点にして、手書き文字をイメージした字形になっています。



RuneAMN_Series_Fontsは、デザイン・イラスト向けのルーン文字フォント集です。
複数のルーン文字フォントを収録した、daisy bellのフリーなフォント製品です。



RuneAMN_KnifeA(r)のねらい
これまでRuneAMN_Freeに収録されていたフォントは、正確な直線を基本として成る、ベーシックなセリフ・サンセリフ書体としてデザインされました。
その字形は、端正で美しいものです。反面、産業革命以降の印刷物に使われた金属活字・写植技術の流れを汲む、どこか人工的な文字の形でもあります。
ルーン文字が役立つ場面の多くは、魔法をコアとする、古代〜中世ヨーロッパ的なイラストです。

もちろん、セリフ・サンセリフ書体が魔法世界と反発するということはありません。むしろセリフ書体は時計の時刻を示すローマ数字を連想させて、魔法と非常に相性が良い字形です。実際に私が100個のルーン魔法陣をデザインした際には、サンセリフ書体と共に大活躍しました。
一方で、産業革命以前の、手書きあるいはナイフで木版や石版に描いたようなルーン文字フォントを作れば、RuneAMNユーザが描けるデザインの幅が広がるのではないかと考えました。

そこでデザインされたのが、RuneAMN_KnifeA~Dフォントです。
2015/07現在、全7種類が存在します。4個より多いのは、"r"(Reverse/反転)と"Bold"(太字)を含むからです。
これらを総称して、 RuneAMN_Kinfe's あるいは、
プログラマの慣習に従って RuneAMN_Knife*フォント と呼称します。

今回は、この中からRuneAMN_KnifeAおよびKnifeArを、フリーフォントとしてリリースしました。
KnifeA(r)があれば、ルーン文字による自然物への手書きデザインが簡単になります。

## RuneAMN Free Series Fonts アップデートについて
今回のRuneAMN Free Series …

ブラックレター書体のデザイン・チートシート

イメージ
project daisy bellのRuneAMN_Proシリーズフォントには、BlackletterおよびBlackletterPlowとして、ルーン文字のブラックレター書体をデザインして収録しています。
 (BlackletterPlowは次回リリースで収録予定。)

このルーン文字版ブラックレター体フォントをデザインするにあたり、既存のラテン・アルファベットフォントから、デザイン性の高い複数のブラックレター体を参考にして、ブラックレター書体の特徴を抽出する作業を行いました。
この記事のチートシートは、その際に観察結果を自分用にまとめたものです。


装飾性の高いブラックレター体の特徴を知り、使いこなすことで、作品タイトルやロゴに最適化された専用のブラックレター文字をデザインすることができます。
また、既存フォントのデザインをロゴ用に調整する際も、不自然になるのを避けることができるようになります。

いちおう注意点を。このチートシートはあくまで私製で、観察の結果をまとめたものです。
ブラックレター体のデザインについて、体系立った公式の解説が欲しい方は、カリグラフィーの教科書などに正確な情報が載っていると思われるので、それらをご参照ください。
(というか、そういったものがWeb上に見つからなかったので仕方なく作ったものです。もっと詳しい方からマサカリが飛んでくるのを待っています。)
















以上です。
slideshareにUpすればよかったのかもしれませんが、2000x1000で作ってしまったものは仕方ない。

上の項目をまとめたチートシートを下に置いておきます。


Pixiv(ユーザページ)にも同じものをUpしておきます。
本ページの内容が更新された際はTwitterアカウントで告知するかもしれません。


同人誌・ イラスト・デザイン向けダウンロード販売サイトの比較一覧

イメージ
ダウンロード販売しているフォント製品の、購入方法の選択肢を増やそうと思い立ち、ダウンロード販売サービスを調査しました。
その防備録です。

拠点としてPixiv/BOOTHにdaisy bell 製品紹介ページを作っており、BOOTHアカウントを持っていないユーザのために、Gumroadでも同じフォント製品を取り扱っています。



"project daisy bell"はオリジナルのデザインフォントを販売しています。
これまでの販売履歴をチェックしてみたところ、代引き購入が多いことがわかりました。
これは、クレジットカードが多いだろうという私の予想に反していました。
また、Pixiv/BOOTHのアカウントを持ってない(アカウント作成もしたくない)ユーザのために用意したGumroadが、あまり有効ではないことがわかりました。
そこで、
・そのダウンロード販売サイトのアカウントを持っていなくても購入できる
・代引きによる支払いで購入できる
という条件で、ダウンロード販売サイトを検討することにしました。

フォント製品の主な想定ユーザ様は、個人のデザイナ・イラストレーターの方々です。
そのため、調査の対象は、イラストサイトや同人誌ダウンロード販売に関連したサイトが中心となっています。


現在、"project daisy bell"による有償フォント製品は、以下の2つです。


RuneAMN_Pro_Series_Fonts  1600円
RabbitMaluka  600円
(価格は2015/05時点でのものです)

RuneAMN_Pro_Series_Fontsは16種類のルーン文字書体を収録したデザインフォント集で、フォントとしてはともかく、同人関連のDLサイトで扱う製品としては、額がひとつ大きな区分に入ります。
 RabbitMalukaは、検討したサイトで扱っている同人誌などの商品と、同じくらいの値段になっています。

ダウンロード販売サイト一覧 チェックしなかった項目 ・税別とか面倒なので無視した・購入側が代引き・口座振込を選んだ場合の手数料は無視した
・販売側へ売上を振込む際の手数料も無視した
・購入ページのSSL対応とかチェックしていません
・(特に同人誌をPDFなどで販売する場合)専用ブラウザの出来とかDRM付けたいと…

CodeIgniter3で、GETパラメタによるページネーション

イメージ
CodeIgniter3で、GETパラメタによるページネーション


ドキュメントは以下。
http://www.codeigniter.com/userguide3/libraries/pagination.html

でも、結局はCodeIgniterのソース(system/librarys/pagination.php)を読みました。
最初からソースを読んだほうが早かったと思われます。
今回はCodeIgniterが持つレイヤの薄さに助けられました。

要求としては、ごくありきたりなGETを使ったページ指定により、
" http://{PAGE_URL}?page=2 "
のようなURLでページネートを実現することです。

基本の方法 最終的に以下のように設定しました。

application/controllers/任意のコントローラ.php
$count_image_files = $this->Image_file_model->get_count_image_files();

$per_page = 10;
$config = array();
$config['base_url'] = current_url();
$config['total_rows'] = $count_image_files;
$config['per_page'] = $per_page;
$config['use_page_numbers'] = true;
$config['page_query_string'] = true;
$config['query_string_segment'] = "page";
$config['full_tag_open'] = '<span class="pagination">';
$config['full_tag_close'] = '</span>';
$this->pagination->initialize($config);

$params = array();

FontForgeでフォントに「文脈依存の置換(conditional features)」を設定する

イメージ
FontForgeでフォントに「文脈依存の置換(conditional features)」を設定する手順を解説します。
文脈依存の置換は、前の文字によって次の文字を異字体に置き換える機能です。
筆記体(Script)書体にはぜひ必要な機能です。文字間の線を滑らかに繋げるために、前の文字に合わせて字形を変えなければならないからです。
caltにより設定された条件により、aaltによる置換を呼び出すものと思われます。 わたしも本設定を試している途中なので詳細はまだ不明です。

なお、本手順中でLookupとSubtableの名称は、FontForgeが自動生成するデフォルトのものを使用しました。
FontForgeは、日本語環境では日本語の設定名を生成します。
今回は、LANG=Cを頭に付けたコマンドライン呼び出しにより、英語ロケールとUIで作業を行いました。
英語のリファレンスを検索しやすい、などの利点もあるので、英語ロケールで作業することをおすすめします。


References:
チュートリアル (その 7)』による条件付き機能による置換を使用します。英語版『Tutorial #7 (Conditional Features )』も、日本語版が少し古くなっているので、必要に応じて参考にしました。
しかし、この英語版も説明が丁寧ではないので(あるいは英語版も古くなっているので) 、既存の条件付き置換を使用したフォントをFontForgeで開いて設定を読んだりしました。

This sample setting:
letter "b" を前の文字によって "b.high" に置き換えます。
"b.high"には適当なコードポイントを割り当てました。これがテストであるためです。本当はフォント固有の異字体を置くためのコードポイントが定義されているので、その領域を使うべきです。

## Create "b.high" letter


適当なコードポイントに"b.high"を作成します。
デフォルト設定では、一部の文字を覗いてユニコードコードポイントによる"uniXXXX"といった名前が付いています。エディタ上部の名前入力欄か、MenuのElement>…