にせねこメモスマートフォン用の表示で見るにせねこメモはてなダイアリーがUTF-8じゃないので移ってきました。2020-02-20このブログについて文字・フォント・プログラム・技術・趣味などについて、Twitterでは書きづらい長い内容などをまとめるためのブログです。基本的には自分用のメモとして書いている部分が多いです。TrueTypeTrueType命令で遊ぶシリーズ。fontの変化軸の値をTrueType命令で読み取り、その値に応じてTrueType命令を使ってグリフを回転させている。テストページはこちら。font機能が追加された。2016年9月のことである。これにより、変化軸を設定して、それに沿って変化するフォントを作成できるようになった。基本の形の情報と変化した形の差分情報を持たせていて、レンダリング時に変化軸の値を変化させると、形が補間される。3DCGを知っているのであれば、モーフターゲット等と呼ばれる機能を想像するとよい。セリフ体とサンセリフ体を設定してそれらを切り替えたりその中間にするだとか、文字の太さ(ウェイト)やエックスハイトを自在に変化させることが(ちゃんと設定すれば)可能になる。fontへのソフトウェアの対応が最近進んできたので、これを利用して文字の回転を指定できるフォントを作ってみたい。フォント作成時に設定した変化軸の値は、レンダリング時にユーザー側で変化させることができるが、この値を新規に追加されたTrueType命令GETVARIATIONを利用して読み出すことができる。fontを作ることができる。fontについての概要をつかむには次の記事がよい。Mediumこれを読みながらメモしたツイートのまとめが次である。fontに必須のものは次の通り。valuesの集合で表現するもの'fvar'テーブル...フォント内で使われる軸を定義。instanceの情報も含む。編集TTX/FontToolsフォントの編集には、OpenTypeフォントバイナリと編集に便利なXMLとを相互変換できるユーティリティであるTTX/FontToolsを用いる。fonttoolsとすれば簡単に導入できる。font.ttfとするとフォントファイルfont.ttfの内容をXML形式でダンプしたfont.ttxが出力される。font.ttxとするとfont.ttxをフォントバイナリに変換する。名前が被る場合は#1などの連番suffixがつく。今回はTTXのバージョンは4.2.5を利用した。.ttxファイルはTTXのバージョンによって書式が変更されていたりするので、別のバージョンでダンプした.ttxファイルを.ttfに再変換するのは避けた方がよさそうに思う。fontのサンプルがアドビによって提供されているので、覗いてみて、参考にする。<gvar>をみて参考にした。avarなど)のだが、今回の目的には使わない。作成さて、回転するvariableフォントの作成に入る。MB)をダウンロードしてきて、TTXで.ttxファイルに変換する。Arotate.ttfすると、Arotate.ttxファイルが出来上がるので、これをテキストエディタで開いて編集していく。<name>の下に、変化軸やインスタンスの名前に使う文字列データを最低限追加しておく。WindowsとMac用に2回同じ値を定義した。nameIDは、0~255は用途が決まっている(または予約されている)ので、256~32767を使う*1。fontの体をなすための次のコードを<ttFont>~</ttFont>の下に追加する。</gvar>STATはフォントスタイルの定義であり、fvarはフォントで使われる変化軸の定義である。それっぽくなるように適当に設定した。fvarでは変化軸を一つ(ROTT)定義し、あとはそれっぽい値にしている。変化軸はASCII文字4文字からなるタグで指定する。タグはイタリック、幅、ウェイトなどのためにいくつか登録されたものもあるが、自分で定義することもできる。フォント作者が勝手に作ったタグはアルファベット大文字で始まりアルファベット大文字と数字のみからなると決められている*2。回転角を指定する軸なので、-180°~180°を指せるように軸の設定をした。gvarは変化する部分を定義するテーブルだが、ほぼ空っぽである。これでは変化軸に沿って値を変えてもグリフは変形しないはずであるが、変形はTrueType命令に任せることにするのでこうなっている。次にTrueType命令の改変を行う。instructionで変化軸の値の取得するために、GETVARIATION命令が追加された。OpCodeは0x91。GETVARIATION命令を実行すると、変化軸の数だけ現在のノーマライズされた座標の値(-1.0~1.0ということだろう)がスタックに積まれる(形式は2.14の固定小数点数)。積まれる順番は'fvar'に定義されているものと同順で、'fvar'の最初に定義されているものが最初にpushされる。新規に追加されたこの命令であるが、もちろん対応していない処理系では扱うことができず、未定義命令としてエラーになってしまう。互換性のため、'fpgm'あるいは'prep'においてIDEF命令によって互換の命令を割り当てる必要がある(未定義命令でないものはIDEFによって上書きされない)。今回は変化軸が1個なので、GETVARIATION命令と同じ個数pushする次のような命令を追加する必要がある。10において、これを書くとGETVARIATIONがうまく動かないみたいなので書かない。代わりにGETINFOでバージョンを取得し、GETVARIATIONに対応した42以上ならばGETVARIATIONを実行、それ以外なら0を返すようにすることにする。]GETVARIATIONによって得られる変化軸の値はF18Dot14で-1.0~1.0に正規化される。今回は入力軸は回転角度で-180~180が-1.0~1.0に正規化されている。にせねこメモで作成した三角関数は入力としてスタックトップからF26Dot6の角度[°]を受け取るので、-1.0~1.0(F18Dot14)→-180.0~180.0(F26Dot6)への変換が必要。180.0を掛けた後、256.0で割ってやればよい(あるいは、180/256=0.703125を掛ける)。Areaに書きこんでいた部分を、この命令で置き換える。これらをまとめると、<prep>は次のようになる。</prep>これをTTXで.ttfファイルに変換すると出来上がりである。Edgeで動作を確認している。MacはTrueType命令を無視するはずなのでたぶん動かない。DIYセブンイレブンのコピー機は小冊子印刷ができる。PDFまたは複数の画像ファイルを読み込んで小冊子となる様に面付して印刷してくれる。使い方について、詳しくは次の記事を参照。www.doujinshi-print.com以下はセブンイレブンのコピー機でPDFを印刷しようとした時に引っかかった内容をまとめておく。2019年12月現在の状況。モノクロ印刷の場合はデータをモノクロで作成しておく。不必要に解像度を上げない。印刷はモノクロなのにもかかわらず、600dpi以上の解像度でフルカラーのPSDファイルを配置したPDFファイルを小冊子印刷しようとしたところ、30分経っても全部出力されない、ということがあったので、解像度を下げる、PDFをグレースケールデータにするなどしてデータを小さくしておいた方がよい。メディアに巨大なファイルは入れない方がいい普通紙プリントを選択すると、画像一覧を表示するために画像を読み込む。この時、巨大なPDFファイル等があると、画像を読み込み中と出たまま読み込みに時間かかって待たされる。300MBのPDFファイルを読み込むのに20秒ほど。不必要なファイルは入れないのが吉。小冊子印刷では原寸印刷ができないA5のデータをA4に冊子印刷する際、原寸印刷はできず、強制的に「ちょっと小さめ」を選択させられ、データ原寸よりやや縮小して印刷される。公式サイトにあるテンプレートは仕上がりサイズより一回り小さいサイズとなっていて、ちょっと小さめの影響を回避できるので、セブンイレブンのコピー機で印刷するのが決定している場合はこれをもとに作るのがよさそう。縮小が発生すると、原稿にトーンを使っている場合はモアレが発生する可能性がある。トーンを使う代わりにグレースケールで塗ることでも回避できる。1部目の出力には時間がかかる小冊子印刷するとき、印刷を開始すると最初に「ページ処理中」と表示されて長めに待たされる。(24ページ)を印刷した時は印刷完了まで5分程度かかった。待たされるのは1部目を出力している時だけで、2部目以降はすぐに印刷された。1ページ毎のJPEG/TIFFの場合、最大32ページ。全ページを1ファイルにまとめたPDFファイルの場合最大99ページ。情報を募集しております。Tweet広告を非表示にするもっと読むコメントを書く2019-11-22タイ語におけるハイフネーションについてタイ語タイ語組版でハイフネーションってあるの?...一応ある。自分でもタイ語ではハイフネーションをしないものだとばっかり思っていたが、実際に用例がある。タイ語にもハイフネーションがあるとはっきり書いてあるサイトが見当たらなかったので、ここに書いておく。ハイフネーション英語やロシア語等の組版では、単語の途中で改行する場合に、行末にハイフンをつけて続きを次の行に送るハイフネーションと呼ばれる操作がある。長い単語が含まれる場合に、行長を一定にするために使われる。America...タイ語にハイフネーションはない?タイ語でもハイフネーションはあるのだろうか?モリサワの発行する英中韓組版ルールブックのタイ語では、次のように書かれている。行揃えは、「均等配置(最終行左揃え)」が基本ですが、デザインによっては「左揃え」や「センター揃え」が使われることもあります。この際、注意したいのは単語の間では改行を行なわない、ということです。タイ語にはハイフネーションのような考え方がないので、単語の区切りや改行してもよい位置などを確認しながら作業をするとよいでしょう。(2019/10/22閲覧)このように、大抵は文章は均等配置(ジャスティファイ)され、行末のハイフンを全く用いない本も多い。「ハイフネーションのような考え方がない」というのは言いすぎではないかと思う。実際の印刷物に、ハイフネーションを行った例がみられる。手元の本から見つけた例を挙げる。