投稿

12月, 2014の投稿を表示しています

SVG画像の分割スクリプトをPythonに移植した話 - SVG Advent Calendar 2014-

イメージ
この記事は、SVG Advent Calendar 2014の参加記事です。前回(20日)は @hashcc さんの「東京の鉄道路線図SVGを作りました&パブリックドメインで配布します」でした。
@hashccさんの力作の翌日を担当することになってしまいましたが、微力ながら相応の記事になるよう力を尽くす所存です。

今回は、ルーン文字フォント制作に使用している手製のSVG画像の分割スクリプトを使うことになった経緯、その再実装(リファクタ)に至る過程、そしてその結果について書かせていただきます。



オリジナルフォント作りと、SVG画像の分割スクリプト わたしが現在公開しているRuneAMNシリーズフォントは、イラスト・デザイン向けに作られたルーン文字フォントです。普通のアルファベットを入れてフォントを適用するだけで簡単に、ルーン文字をデザインに使えるようになっています。
シリーズ構成は、独立したFree版とPro版(有償)があり、それぞれ重複しない独自の書体を収録しています。
他に、Project "daisy bell"の製品として、OlChikiAMN(オルチキ文字フリーフォント)も配布しています。

これらのフォントを制作する際、Illustratorで書体デザインを行っています。そして、SVG画像への書き出しを経由して、FontForgeに読み込ませてフォント化しています。
なぜフォントエディタの編集機能で完結させず、複雑なビルド手順を踏む選択をしたかといえば、FontForgeよりIllustratorのほうが、ベクタ画像のエディタとしては使い慣れており高機能だったという点に尽きます。
また、フォントのデザインの中には、フォントエディタでなければ事実上デザインが不可能なもの(Multiple Masterなど)もありますが、今回はそういったフォント機能を使う予定がなかったため、この手法を選択することができました。

SVG分割スクリプト(svg_splitter.pl)の機能拡張 フォントの制作プロセスにおいて、『すべてのグリフ(文字)を一枚のSVG画像に描いて、後から自動分割したい』という要求がありました。
すべてのグリフを1枚の画像に描きたかったのは、そのほうがファイルの管理が簡単で、デザインを統一しやすいためです。
自動分割というのは、…

docoptを使ってみた(Ubuntu14.04 / python3)

現在、フォント制作に使用している、SVGを分割するPerlスクリプトを、Python3に移植中です。

引数の処理をPythonの流儀に合わせようと検索したところ、
馴染みのあるヘルプを文法に従って書けばパーサを生成してくれます』(リンク先サイト様より引用)というdocoptが紹介されているのを発見。
githubのプロジェクトページによると、MITライセンス。
とても良さそうだったので、導入ついでに引数オプションをいろいろ変更することに。

変数名とコードの整理だけの純粋な移植をするつもりが、早速機能を盛ってしまいました。趣味プログラミングでこれを抑制するのは本当に難しい。



Ubuntu14.04へのdocoptモジュール導入を導入する際、普通にpipコマンドを使うと、Python2の方にdocoptが導入されます。私はPython3で使いたいので、
sudo apt-get install python3-docopt
にてPython3側に導入しました。


以下が、動作確認に使ったコードです。

#!/usr/bin/python3

"""Process some integers.

usage: this_script.py [-h] <src_image> <listfile> [--output_dir=<DIR_OUT>] [--width=<NUM_WIDTH>] [--height=<NUM_HEIGHT>]

options:
    -h, --help  show this help message and exit
    --sum        sum the integers (default: find the max)
    --output_dir=<DIR_OUT>    splitted SVG images output dir [default: glyphs_/]
    --width=<NUM_WIDTH>        width for unit of split base squared(cross-section) [default: 1000]
    --height=<NUM_HEIGHT>  …

RuneAMN_Proの話 - #LOVEFONT Advent Calendar 2014-

イメージ
はじめまして。Michinari Nukazawaと申します。
今回は、なぜか空いていた #LOVEFONT Advent Calendar 2014 の7日目の代打として、拙作のルーン文字フォントセット「RuneAssignMN_Free」および「RuneAMN_Pro」と、なぜこれらのフォントを作ったのかについて、書かせていただこうと思います。

6日目はMignon Styleさんの「すっきりして可愛い商用可のフリーフォント MigMix」でした。

まさか、初Advent Calendarが代打になるとは思いませんでした。だったら手を挙げるなという話かもしれませんが。
荒削りですが、ご容赦ください。



あなたは誰? あらためましてはじめまして。MNukazawaと申します。Project "daisy bell" [booth.pm] の主催者です。
現在は、ルーン文字フォントセット「RuneAssignMN_Free」および、
フォントセット「OlChikiAssingMN_Free」をフリーで公開しています。
また、フォントセット「RuneAMN_Pro」を販売しています。

最近ではオープンソースのフォント作成アプリFontForgeの日本語訳ページ不具合修正などをやったりしていました。
わたしは自分の肩書はプログラマだと思っています。...が、いつのまにやら現在の主なプロダクトはフリーフォントになってしまいました。
責任者はどこか。俺か。



フリーフォントの配布はSourceForgeでも行っています。
こちらは、サポートのTwitterアカウント。Twitterでは、今のところほぼ毎日、フォント作成の作業経過を報告しています。


これらのフォントは、ただ配布・販売しているだけでなく、その制作に使用したプログラム(ビルドスクリプト)と素材ファイルをgithub上で無償公開しています。
(Pro版も、すべてのビルドスクリプトと、スクリプトの動作検証用に1フォント素材を公開している)


LOVEFONTはフォント利用者の視点がメインのようなので、今回は製作者として。(アドベントカレンダー内でフォント会社の中の人の登場予定とかありそうで怖いですが...。)

RuneAMN_Proフォントセット作成までの過程 最初に重要なことを。

『Freeは…