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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
cockscomb
November 26, 2021
Programming
0
2.4k
吉田を支える技術
cockscomb
November 26, 2021
Tweet
Share
More Decks by cockscomb
See All by cockscomb
jq at the Shortcuts
cockscomb
1
2k
GraphQL放談
cockscomb
4
2.1k
GraphQL Highway
cockscomb
28
8.7k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.4k
ユーザインターフェイスと非同期処理
cockscomb
5
2k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.6k
あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい
cockscomb
1
7.6k
iOSアプリエンジニアのためのAndroidアプリ開発
cockscomb
7
2k
Other Decks in Programming
See All in Programming
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.9k
Fragmented Architectures
denyspoltorak
0
140
ThorVG Viewer In VS Code
nors
0
760
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.8k
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
960
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
140
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
120
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
120
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.3k
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
110
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.7k
CSC307 Lecture 06
javiergs
PRO
0
680
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
So, you think you're a good person
axbom
PRO
2
1.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
My Coaching Mixtape
mlcsv
0
45
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
The Language of Interfaces
destraynor
162
26k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Side Projects
sachag
455
43k
The untapped power of vector embeddings
frankvandijk
1
1.6k
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
࣍ճɺେ͖Ίͷຊాɻޤ͏͝ظ