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.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
CSC307 Lecture 02
javiergs
PRO
1
760
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
260
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
AIエージェントの設計で注意するべきポイント6選
har1101
6
3k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
300
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
230
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
190
チームをチームにするEM
hitode909
0
440
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
2
450
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
0
200
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Curious Case for Waylosing
cassininazir
0
200
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
390
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Deep Space Network (abreviated)
tonyrice
0
33
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
The Language of Interfaces
destraynor
162
26k
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
࣍ճɺେ͖Ίͷຊాɻޤ͏͝ظ