SlideShare a Scribd company logo
1 of 78
Download to read offline
KMC Font Project
2016 #3
2016.7.31 Sun. kmc-id: maztani
FontForgeで欧文書体製作
事前準備
 FontForgeの導入
 演習用ファイルとスライドをダウ
ンロード
○ Slack #moji にリンクあります
FontForgeをDL・インストール
https://fontforge.github.io/
自己紹介
 kmc-id: maztani (抹谷)
 工学部電気電子工学科1回
 一応 graphics に生息
 Twitter: @k_maztani
 Pixiv: @maztani
近況報告
 モリサワのフォントスイッチプロジェ
クトさんから「type-in&font-in」と
「MORISAWA FONT DICTIONARY」を
頂いた。
 ありがとうございます
Section
FontForge
1
FontForgeをDL・インストール
https://fontforge.github.io/
FontForgeの起動
 FontForgeを起動
 《フォントを開く》画面で、
〈新規〉をクリック
フォントビュー
 FontForgeのメインの画面であるフォントビュー
 現時点でグリフを登録してないので、×印がついている
Section
フォント情報の設定
2
フォント情報
 エレメント > フォント情報
 OpenType フォントが持つ
様々な機能は、ここで設定
できる
PostScript Names
 フォントの名前等は、PS Names で設定する
○ フォント名 :PostScript名のこと。スペース禁止。
フォントのウェイト等をハイフンでつなげて入力。
例)HogeSans-LightItalic
○ ファミリー名 :フォントファミリーの名前。
例)Hoge Sans
○ 表示用の名前 :アプリケーション等で表示されるフォントの名前。
例)Hoge Sans-Light Italic
【演習01】フォント名を設定する
フォント名/ファミリー名/表示用の名前 を
適切に入力してください
〈条件〉
○ ファミリー名は各自で自由に決める
○ ウェイトはBold
【演習01】フォント名を設定する
フォント名/ファミリー名/表示用の名前 を
適切に入力してください
〈条件〉
○ ファミリー名は各自で自由に決める
○ ウェイトはBold
【正解例】HogeFont-Bold/Hoge Font/Hoge Font-Bold
Ctrl+S / ⌘+S
 保存しましょう
 保存形式は「.sfd」で、FontForge用の作業ファイルです
 sfdファイルを直接クリックしてもFontForgeがうまく立ち上が
らなかったりするので、先にFontForgeを起動してから作業
ファイルを選択しましょう
Section
グリフを描く
3
グリフ編集ウィンドウ(アウトラインウィンドウ)
 編集したいグリフの上で
ダブルクリック
 おなじみのベジエ曲線が
編集できる
 しかし、FontForge上で
編集するのは面倒……
グリフ編集ウィンドウ
SVGを取り込むのが簡単
FontForgeの初期設定ではベー
スラインは下から200px
このベースラインに合わせた、
1000px×1000pxのプレーン
SVGを用意する
800px
200px
1000px
SVGの取り込み
 取り込むグリフの編集ウィンドウで、
ファイル>取り込み
 フォーマットを〈画像〉から〈SVG〉
に変更する
 SVGファイルを選択し、〈取り込み〉
をクリック
演習 SVGの取り込み
 配布した ”K”, “M”, “C”, “f”, “i”
のSVGファイルを適切な場所に取
り込みましょう
 ファイル名は、「Glyph_K.svg」
などです
 「Glyph_f-i.svg」は後で取り込み
ます
制御点の丸め
 OpenTypeフォントでは、制御点(ノード・ハンドル)の座標
は整数と決まっている
○ OpenTypeだけではなく、他フォーマットでも整数である
 SVGを取り込んだだけでは、座標が小数になっている場合があ
るので、整数に丸める必要がある
制御点の丸め
 グリフ編集ウィンドウで Ctrl-A 全選択
 エレメント > 座標を丸める > 整数に
Section
サイドベアリング調整
4
サイドベアリングとは
 セット幅とセットの差のこと
 つまり、文字の左右にある余白
 適切に設定することで、可読性を
確保したり、書体の雰囲気を作る
ことができる
サイドベアリングを設定しよう ▶
メトリックウィンドウを開く
 表示>メトリックウィンドウ
 メトリックウィンドウの機能
○ 文章を打ったときの外観が確認できる
○ 下部入力フィールドでサイドベアリングとペアカーニング(後述)を
設定できる
メトリックウィンドウ
サイドベアリングの確認
 上部入力窓に”K”と入力
 下部のセルに左右のサイドベアリングが表示される
サイドベアリングの編集方法
 サイドベアリングの幅は、数値で入力する
○ 詰めるとき:負 広げるとき:正
 設定したい文字をメトリックウィンドウに入力
 メトリックウィンドウ下部に表示された左右サイドベアリン
グセルに数値を入力
サイドベアリングの修正
 初期のサイドベアリングは大きいので、セルの数字を変更
 左90, 右10 くらいに設定する
サイドベアリング設定のコツ
大 中 小
サイドベアリングの修正
 “KMCfi” と入力すると、K以外の字幅がおかしい
 適切な値に修正してください
サイドベアリングの修正
【解答例】M(90, 90), C(60, 60), f(50, 40), i(60, 60)
Section
OpenTypeの仕組み
5
OpenTypeの仕組み
 実際にフォントを作りながら進行してきましたが、ここで少
し座学に戻ります
 フォントを作るにあたって、OpenTypeの仕組みを多少理解し
ておくと、自分が何の作業をしているのかよく分かる
 というわけで、簡単にOpenTypeとは何か説明します
OpenType フォントファイルのはなし
 OpenTypeFontでは様々な情報が複数のテーブルに格納される
○ グリフ・文字コードとの対応・名前・メトリクス・位置情報 …
 テーブルには4文字のタグが割り振られている
○ ‘BASE’, ‘CFF’, ‘DSIG’, ‘GSUB’, ‘GPOS’, ‘OS/2’, ‘cmap’, ‘name’, …
 (OpenType)フォントファイルとは、非常に大雑把に言うと、
情報が格納された種々のテーブルの集まりである
OpenTypeテーブルの例
Tag Name 説明
BASE Baseline data ベースラインなどの位置
CFF Compact Font Format 1.0 グリフデータ
DSIG Digital signature デジタル署名
GDEF Glyph definition data グリフの種別を定義
GSUB Glyph substitution data グリフ置換
GPOS Glyph positioning data グリフ位置
OS/2 OS/2 and Windows specific metrics Windows用メトリクスデータ
cmap Character to glyph mapping 文字コードの割り当て
OpenType Layout Table とは
 OpenTypeをOpenTypeたらしめているのがOTLテーブル
=TrueTypeには無かったテーブル
 グリフを置換しポジショニングするための情報を提供する
○ だからレイアウトテーブルと呼ばれる
 GSUB, GPOS, GDEF, BASE, JSTF の5つのテーブルを指す
 今回注目するのは GSUB と GPOS のみ
OTLテーブルの構成
 OTLテーブルのデータは、
スクリプト (Script)
言語システム (Language System)
フィーチャー (Feature)
ルックアップ (Lookup)
によって構成される
OTLテーブルの構成要素 ①
 Script
○ 1つ以上の言語を表現するために使われる関連のあるグリフの集合
○ OTLテーブルにおいてトップレベルに定義される
○ e.g. ラテン文字 : 英語、ドイツ語、フランス語などに使用
漢字 : 中国語、日本語などに使用
コレ→ ひらがな : 日本語でのみ使用
 Language System
○ その名の通り、言語のこと
OTLテーブルの構成要素 ②
 Feature
○ 言語を表すためのグリフの使用方法のルール
▶ 英語 :ff は合字に置換するルール=’liga’ フィーチャー
▶ 日本語:縦書き時は専用グリフに置換するルール=’vert’ フィーチャー
○ FeatureはLookupを使って定義される
 Lookup
○ グリフの置換・ポジショニングを適用するグリフ・グリフに適用する
操作の種類・適用された結果 などを定義する
○ 具体的な情報をここに記述するということ
OTLテーブル構造の図解
Script
Language system
Feature
lookup
lookup
Language system
Feature
Lookup
Feature
Lookup
lookup
OpenType Layout Table
GSUBテーブルとGPOSテーブル
 今回扱うOTLテーブルは ’GSUB’ と ’GPOS’
 GSUB
○ Glyph SUBstitution = グリフ置換 のためのテーブル
○ e.g. ff や fi を合字に置換する機能
 GPOS
○ Glyph POSitioning = グリフ位置 のためのテーブル
○ e.g. ペアカーニング
ペアカーニング情報の格納場所
 では、ペアカーニング情報はOTLテーブル内ツリー構造のどこ
に格納されるか
〈ヒント〉
○ ポジショニングの情報である
○ ラテン文字・英語の機能である
○ カーニングというルールを実装するものである
ペアカーニング情報の格納場所
latn
ラテン文字
dflt
デフォルト言語
kern
Kerning
Lookup
-
GPOS
 右図の Lookup に
○ カーニングする2つのグリフ
○ 詰め具合
を記述する
▶ ペアカーニング機能が実現
Section
ペアカーニング設定
6
ペアカーニングとは
 特定の2文字間で働くカーニング
○ e.g. “Ty”, “AV”
 OpenTypeフォントの機能の一つ
 文字を入力するだけで、自動的にカーニングが効く
前準備
 FontForgeでは、標準でペア
カーニング設定できる状態に
なっていない
 ペアカーニング情報を記述する
Lookupを新規作成する
latn
ラテン文字
dflt
デフォルト言語
kern
Kerning
Lookup
-
GPOS
ペアカーニング用 Lookup を作成
 エレメント > フォント情報
 Lookups(左ペイン)>
GPOS(タブ)
 Add Lookup をクリック
ペアカーニング用 Lookup を作成
 Lookupウィンドウが表示される
1. 種類:Pair Position (kerning) に変更
2. 「機能」の<New>をクリックして、
空白に”kern”と入力
3. 「用字系と言語」は自動で入力される
4. OK をクリック
ペアカーニング用 Lookup を作成
 これでScript, Language System,
Feature が設定できたことになる
 機能 =Feature : kern
 用字系 =Script : latn
 言語 =Language System : dflt
ペアカーニング用 Lookup を作成
 Lookup Nameは自動で入力され、
その名前がGPOS欄に追加される
 Featureまでは設定できたが、肝心
のLookupが未設定
 追加された名前を選択して、Add
Subtable をクリック
ペアカーニング用 Lookup を作成
 Subtable の名前を何にするか聞か
れる
 名前は何でも良いが、分かりやすい
ように ”Kerning-1” に変更する
 OK をクリック
ペアカーニング用 Lookup を作成
 Kerning format ウィンドウが表示
 Kern pair を選択:First part に ”K”,
Second part に “C” を選択
○ 別になんでも良い
 OKをクリック
ペアカーニング用 Lookup を作成
 Lookup Subtable が表示
 ようやく Lookup を作成できた
 KC間でペアカーニングが設定された
ことが確認できる
 OKをクリック
ペアカーニング設定の仕方
 メトリックウィンドウで設定できる
 今までの前準備で、メトリックウィンドウ右上のドロップダ
ウンリストが、 [Kerning-1] になっていることを確認
 ペアカーニングを設定したい2文字を入力
 メトリックウィンドウ下部のカーニングセルにツメ具合を数
値で入力
○ サイドベアリングの場合と同様
ペアカーニングを編集
 メトリックウィンドウで ”KCM”
 KC間のペアカーニングが強すぎる
 下部カーニングセルの値を変更し
て、適切に修正してください
ペアカーニングを編集
 メトリックウィンドウで ”KCM”
 KC間のペアカーニングが強すぎる
 下部カーニングセルの値を変更し
て、適切に修正してください
【解答例】-80
Section
リガチャー設定
7
リガチャーとは(復習)
 複数の文字を合成して一文字にしたもの
 現代の欧文組版においては、特定文字の組み合わせの際に、
可読性向上を狙って結合させた文字を指す
http://www.typography.com/images/fontFeatureImages/hoeflertext/htxt_ligatures.png
リガチャー用グリフの取り込み
 リガチャー用に残していた「Glyph_f-i.svg」を取り込む
 フォントビューで ”fi” グリフを探すために、
エンコーディング > エンコーディング変換 > Adobe標準
に変更する
 “fi” のグリフ編集ウィンドウを開く
 SVGファイルを取り込む
リガチャー用グリフの取り込み
 取り込めたら、座標を整数に丸める
 メトリックウィンドウを開いて、サイドベアリングも適切に
設定する
 フォントビューで ”fi” を選択した状態で、メトリックウィン
ドウを開けば良い
 メトリックウィンドウ下部のセルに適当な数値を入力
リガチャー用Lookupを作成
 ペアカーニングの場合と同様に作成できる
〈ヒント〉
 リガチャーは「グリフの置換」
 リガチャーのフィーチャータグは”liga”
 Subtable Name は ”Ligature-1” とかでOK
リガチャー用Lookupを作成
【解答】
 フォント情報ウィンドウ > Lookups > GSUB
 Add Lookup をクリック
 Lookupウィンドウが表示される
 種類:「合字への置換」に変更
 「機能」の<New>をクリックして、空白に”liga”と入力
 「用字系と言語」は自動で入力される
 OK をクリック
リガチャー用Lookupを作成
 GSUB欄に自動で追加された名前を選択する
 Add subtable をクリック
 Subtable名を ”‘liga’ 標準の合字 in ラテン文字 lookup 0-1” か
ら”Ligature-1”に変更
 OKをクリック
Lookupが作成できた
 フォント情報ウィンドウの GSUB
タブに ”Ligature-1” という
Subtable が追加されている
 これを選択して、Edit Data をク
リック
リガチャー用Lookupの編集
 Subtable 編集ウィンドウが開く
 <New>をクリックし、以下を入力
Ligature Glyph Name: fi
→ 自動的に ”fi (fi)” に修正される
Source Glyph Names: f i
(※間に半角スペース)
 OKをクリック
リガチャーが動作するか確認
 これでリガチャーの設定は完了
 メトリックウィンドウを開き、 ”fiif” と入力する
 設定が正しければ、”fi” のみが合字へと変換されるはず
Section
フォントの出力
8
フォント出力前の下処理
 フォントを出力する前に、複数のクローズドパスで構成され
たグリフを、1つのパスに結合する
 フォントビューですべてのグリフを選択(Ctrl+a)した上で、
エレメント > 重複処理 > 重なり合う図形を結合
フォント出力前の下処理
フォントを出力しよう
 グリフとOpenTypeの機能を設定できたら、残すはフォントの
出力のみ
 FontForge は TrueType と OpenType の両方出力できるので、
間違えないように
フォント出力ダイアログ
 ファイル > フォントの出力
 フォントの種類を
「OpenType(CFF)」に変更する
 「生成(G)」で出力!
問題点
 問題点が表示される場合がある
 設定していない情報があるから
 通常使用する分には大丈夫なので無視します
完成
めでたい
使えるか確認
 インストールしてWordで入力してみる
○ Nexus Font などのフォント管理ツールを使うのが便利
 「任意の合字」を表示する設定に変えておきましょう
Nexus Font
http://www.xiles.net/
フォント作ってみてどうでしたか?
 これであなたもフォントが作れる
○ すべてのグリフに対して同様の作業を繰り返すだけ
○ かかる時間と労力には覚悟しましょう
 和文の縦書き処理は複雑なので、今回は扱わなかった
 他にも様々なOpenTypeの機能がある
○ 気になったら調べてみてください
参考文献
 OpenType Specification (Microsoft)
○ https://www.microsoft.com/typography/otspec/otff.htm
○ 2016/10/19アクセス
 vanillaの日記『OpenTypeレイアウトへの道』
○ http://vanillasky-room.cocolog-nifty.com/blog/2008/07/opentype-
4b7d.html
○ 2016/10/19アクセス
お疲れ様でした

More Related Content

What's hot

20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuriYoshifumi Yamaguchi
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語GoYoshifumi Yamaguchi
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門Yoshitaka Seo
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526 masahitojp
 
がんばれ PHP Fiber
がんばれ PHP Fiberがんばれ PHP Fiber
がんばれ PHP Fiberinfinite_loop
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会虎の穴 開発室
 
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性tomo_masakura
 
インタフェースの実装パターン
インタフェースの実装パターンインタフェースの実装パターン
インタフェースの実装パターンTakuya Ueda
 
PEP8を読んでみよう
PEP8を読んでみようPEP8を読んでみよう
PEP8を読んでみよう2bo 2bo
 
Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Sho Shimauchi
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabYutaka Kobayshi
 
みんなのPython勉強会#62
みんなのPython勉強会#62みんなのPython勉強会#62
みんなのPython勉強会#62hiroya akita
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/nasa9084
 
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうRuby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうYasuhito Takamiya
 

What's hot (16)

20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
 
Podiff20120127
Podiff20120127Podiff20120127
Podiff20120127
 
がんばれ PHP Fiber
がんばれ PHP Fiberがんばれ PHP Fiber
がんばれ PHP Fiber
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
 
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
 
インタフェースの実装パターン
インタフェースの実装パターンインタフェースの実装パターン
インタフェースの実装パターン
 
PEP8を読んでみよう
PEP8を読んでみようPEP8を読んでみよう
PEP8を読んでみよう
 
Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
 
みんなのPython勉強会#62
みんなのPython勉強会#62みんなのPython勉強会#62
みんなのPython勉強会#62
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/
 
Ruby でパケットパーサを作ろう
Ruby でパケットパーサを作ろうRuby でパケットパーサを作ろう
Ruby でパケットパーサを作ろう
 

Similar to KMC Font Project 3 - FontForgeで欧文書体製作

Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Kenta Kase
 
Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話k1complete
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Takuya Ueda
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGUehara Junji
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋Takuya Ueda
 
「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化Hirokazu Kutsu
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察貴仁 大和屋
 
XPagesで検索してみよう
XPagesで検索してみようXPagesで検索してみよう
XPagesで検索してみようMasahiko Miyo
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門cch-robo
 
まめフラスコで遊ぼう
まめフラスコで遊ぼうまめフラスコで遊ぼう
まめフラスコで遊ぼうlibpanda
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオンTakuya Ueda
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Atsuo Ishimoto
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Takuya Ueda
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成Akineko Shimizu
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前Hiroshi Yamato
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるKoichi Sakata
 

Similar to KMC Font Project 3 - FontForgeで欧文書体製作 (20)

Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用
 
Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
 
「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察
 
XPagesで検索してみよう
XPagesで検索してみようXPagesで検索してみよう
XPagesで検索してみよう
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門
 
まめフラスコで遊ぼう
まめフラスコで遊ぼうまめフラスコで遊ぼう
まめフラスコで遊ぼう
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 

KMC Font Project 3 - FontForgeで欧文書体製作