Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
吉田を支える技術
Search
cockscomb
November 26, 2021
Programming
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
吉田を支える技術
cockscomb
November 26, 2021
More Decks by cockscomb
See All by cockscomb
はてなアカウント基盤 State of the Union
cockscomb
1
1.5k
jq at the Shortcuts
cockscomb
1
2.1k
GraphQL放談
cockscomb
4
2.2k
GraphQL Highway
cockscomb
28
8.9k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.5k
ユーザインターフェイスと非同期処理
cockscomb
5
2.1k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.7k
あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい
cockscomb
1
7.7k
Other Decks in Programming
See All in Programming
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.2k
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
200
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
110
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
230
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
260
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
280
FreeBSDでZabbixを動かす.pdf
kenkino
0
280
wkhtmltopdfの次どうするか問題2026
willnet
1
100
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.2k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
380
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
WCS-LA-2024
lcolladotor
0
830
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
Google's AI Overviews - The New Search
badams
0
1.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
The World Runs on Bad Software
bkeepers
PRO
72
12k
Thoughts on Productivity
jonyablonski
76
5.4k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
Faster Mobile Websites
deanohume
310
32k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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
࣍ճɺେ͖Ίͷຊాɻޤ͏͝ظ