Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
吉田を支える技術
Search
cockscomb
November 26, 2021
Programming
0
2.2k
吉田を支える技術
cockscomb
November 26, 2021
Tweet
Share
More Decks by cockscomb
See All by cockscomb
jq at the Shortcuts
cockscomb
1
1.8k
GraphQL放談
cockscomb
4
1.9k
GraphQL Highway
cockscomb
28
8.3k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.4k
ユーザインターフェイスと非同期処理
cockscomb
5
1.8k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.4k
あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい
cockscomb
1
7.4k
iOSアプリエンジニアのためのAndroidアプリ開発
cockscomb
7
1.9k
Other Decks in Programming
See All in Programming
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
580
GAEログのコスト削減
mot_techtalk
0
120
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
130
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
210
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
120
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
Immutable ActiveRecord
megane42
0
140
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
6
4k
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
120
Introduction to kotlinx.rpc
arawn
0
700
技術を根付かせる / How to make technology take root
kubode
1
250
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
35
1.6k
Building an army of robots
kneath
303
45k
Six Lessons from altMBA
skipperchong
27
3.6k
How to Ace a Technical Interview
jacobian
276
23k
A designer walks into a library…
pauljervisheath
205
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Optimizing for Happiness
mojombo
376
70k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Producing Creativity
orderedlist
PRO
344
39k
How GitHub (no longer) Works
holman
314
140k
Building Applications with DynamoDB
mza
93
6.2k
Scaling GitHub
holman
459
140k
Transcript
٢ాΛࢧ͑Δٕज़ গ͚ͩؒ͠Λ͓͍ͯ٢ా͕͖·͢ɻ
גࣜձࣾͯͳ νʔϑΤϯδχΞ Ճ౻ਘथ JEDPDLTDPNC
8&# %#13&447PM (SBQI2-શΨΠυ
ͯͳಗ໊μΠΞϦʔ ໊લΛӅָͯ͘͠͠هɻ w໊લΛग़ͣ͞ʹهΛॻ͚ΔαʔϏε w݄ͷϦϦʔε͔Β
ͯͳಗ໊μΠΞϦʔ ݟ͑ͳ͍ͱ͜Ζͷվળ͕ओ wίϯςφԽͯ͠"84&,4Ͱ࣮ߦ wεύϜରࡦͷվળ wΞϓϦέʔγϣϯϩάͷվળ w΄͔
None
࣮Λݴ͏ͱͯͳ͏ͩΊͰ͢ɻ ಥવ͜Μͳ͜ͱݴͬͯ͝ΊΜͶɻ ͰຊͰ͢ɻ ̎ɺ̏ޙʹͷ͘͢͝ ͍૿ా͕͋Γ·͢ɻ ͦΕ͕ऴΘΓͷ߹ਤͰ͢ɻ ఔͳ͘େ͖Ίͷຊా͕དྷΔͷͰ ؾΛ͚ͭͯɻ ͦΕ͕ΜͩΒɺগ͚ͩؒ͠Λ͓͍ͯ ٢ా͕͖·͢ɻ
ͯͳಗ໊μΠΞϦʔʹͳ͔ͥසग़͢Δจࣈྻ ૿ా
None
None
None
૿ాΛ٢ాʹ͍ͨ͠
૿ాΛ٢ాʹ͍ͨ͠ ૿ాΛ٢ాʹ͢Δํ๏ʹ͍ͭͯͷݕ౼ wαʔόͰT૿ా٢ాH wˠ(PPHMFCPUΛࠔΒͤͦ͏ wϑϩϯτΤϯυͰT૿ా٢ాH wˠ࠷ۙͷ(PPHMFCPU+BWB4DSJQUΛධՁ͢Δ wͳΜ͔͍͢͝ϋοΫ
ͳΜ͔͍͢͝ϋοΫ
8FCϑΥϯτ
૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ ϑΥϯτͷߏ wϑΥϯτʮจࣈʯʹରԠ͢ΔʮάϦϑʯΛఏڙ͢Δ wจࣈ w6OJDPEFͷίʔυϙΠϯτ wॻهૉΫϥελ wάϦϑจࣈͷܗ
૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ ϑΥϯτʹؚ·ΕΔςʔϒϧͷྫ wHMZQςʔϒϧ wάϦϑ*%ʹରԠ͢ΔάϦϑͷܗঢ় wDNBQςʔϒϧ wίʔυϙΠϯτͱάϦϑ*%ͷରԠ
૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ DNBQςʔϒϧΛॻ͖͑Δ 6 6 ૿ ٢
૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ DNBQςʔϒϧΛॻ͖͑Δ 6 6 ૿ ٢
GPOUUPPMT ϓϩάϥϚʔͳͷͰϑΥϯτΛϓϩάϥϜͰ࡞Δ w1ZUIPOͰϑΥϯτΛૢ࡞͢ΔϥΠϒϥϦ w(PPHMF"EPCF͍ͬͯΔ
def build_yoshida(base_font: ttLib.TTFont): masu = ord('૿') yoshi = ord('٢') cmap
= base_font.getBestCmap() yoshi_cid = cmap[yoshi] head = base_font.get('head') fb = FontBuilder(head.unitsPerEm, isTTF=False) fb.setupGlyphOrder([".notdef", yoshi_cid]) fb.setupCharacterMap({masu: yoshi_cid})
yoshi_glyph = base_font.getGlyphSet().get(yoshi_cid) yoshi_pen = T2CharStringPen(yoshi_glyph.width, None) yoshi_glyph.draw(yoshi_pen) char_strings =
{ ".notdef": ... , yoshi_cid: yoshi_pen.getCharString(), } fb.setupCFF( "Yoshida-Sans", {"FullName": "Yoshida-Sans"}, char_strings, {} )
None
૿ా͕૿͑ͨˠ٢ా͕٢͑ͨ
૿ాͷͱ͖͚ͩ٢ాʹ͍ͨ͠
ϦΨνϟʢ߹ࣈʣ ෳͷάϦϑͷฒͼΛҰͭͷάϦϑʹ͢Δ ffi f != != (BSBNPOE1SFNJFS1SP 'JSB$PEF ͔ͮΒ͖
ϦΨνϟʢ߹ࣈʣ ෳͷจࣈͷฒͼΛҰͭͷάϦϑʹ͢Δ ૿ా ٢ా
0QFO5ZQFͷMJHBGFBUVSF (46#ςʔϒϧͰ࣮͞ΕΔ languagesystem DFLT dflt; feature liga { substitute cid13827
cid27065 by cidmasuda; } liga;
fb.addOpenTypeFeatures(f''' languagesystem DFLT dflt; feature liga {{ substitute {masu_cid} {da_cid}
by {masuda_cid}; }} liga; ''') pen = T2CharStringPen(yoshi_glyph.width + da_glyph.width, None) yoshi_glyph.draw(pen) da_glyph.draw( TransformPen(pen, transform.Offset(yoshi_glyph.width)) )
None
λΠϜϥΠϯ ࢥ͍ͭ͘ Ϛωʔδϟʢ٢ాʣͱ߹ҙ ։ൃ։࢝ άϦϑͷஔ͕ ํΛมߋ ϦΨνϟ ϓϧϦΫΤετ Ϛʔδ
٢ాʹ͢ΔࢫΛࣾؔऀʹใࠂ ө
٢ా͕͖·ͨ͠ w͓૽͕ͤ͠·ͨ͠ wϑΥϯτʹखΛೖΕΔͱ͍͏खஈ wͨ·ʹʹཱͭ w4*-0QFO'POU-JDFOTF
࣍ճɺେ͖Ίͷຊాɻޤ͏͝ظ