Slide 1

Slide 1 text

٢ాΛࢧ͑Δٕज़ গ͚ͩؒ͠Λ͓͍ͯ٢ా͕͖·͢ɻ

Slide 2

Slide 2 text

גࣜձࣾ͸ͯͳ νʔϑΤϯδχΞ Ճ౻ਘथ JEDPDLTDPNC

Slide 3

Slide 3 text

8%#13&447PM (SBQI2-׬શΨΠυ

Slide 4

Slide 4 text

͸ͯͳಗ໊μΠΞϦʔ ໊લΛӅָͯ͘͠͠೔هɻ w໊લΛग़ͣ͞ʹ೔هΛॻ͚ΔαʔϏε w೥݄೔ͷϦϦʔε͔Β೥

Slide 5

Slide 5 text

͸ͯͳಗ໊μΠΞϦʔ ݟ͑ͳ͍ͱ͜Ζͷվળ͕ओ wίϯςφԽͯ͠"84&,4Ͱ࣮ߦ wεύϜରࡦͷվળ wΞϓϦέʔγϣϯϩάͷվળ w΄͔

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

࣮Λݴ͏ͱ͸ͯͳ͸΋͏ͩΊͰ͢ɻ ಥવ͜Μͳ͜ͱݴͬͯ͝ΊΜͶɻ Ͱ΋ຊ౰Ͱ͢ɻ ̎ɺ̏೔ޙʹ΋ͷ͘͢͝ ௕͍૿ా͕͋Γ·͢ɻ ͦΕ͕ऴΘΓͷ߹ਤͰ͢ɻ ఔͳ͘େ͖Ίͷຊా͕དྷΔͷͰ ؾΛ͚ͭͯɻ ͦΕ͕΍ΜͩΒɺগ͚ͩؒ͠Λ͓͍ͯ ٢ా͕͖·͢ɻ

Slide 8

Slide 8 text

͸ͯͳಗ໊μΠΞϦʔʹͳ͔ͥසग़͢Δจࣈྻ ૿ా

Slide 9

Slide 9 text

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Slide 14

Slide 14 text

૿ాΛ٢ాʹ͍ͨ͠

Slide 15

Slide 15 text

૿ాΛ٢ాʹ͍ͨ͠ ૿ాΛ٢ాʹ͢Δํ๏ʹ͍ͭͯͷݕ౼ wαʔόͰT૿ా٢ాH wˠ(PPHMFCPUΛࠔΒͤͦ͏ wϑϩϯτΤϯυͰT૿ా٢ాH wˠ࠷ۙͷ(PPHMFCPU͸+BWB4DSJQUΛධՁ͢Δ wͳΜ͔͍͢͝ϋοΫ

Slide 16

Slide 16 text

ͳΜ͔͍͢͝ϋοΫ

Slide 17

Slide 17 text

8FCϑΥϯτ

Slide 18

Slide 18 text

૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ ϑΥϯτͷߏ଄ wϑΥϯτ͸ʮจࣈʯʹରԠ͢ΔʮάϦϑʯΛఏڙ͢Δ wจࣈ w6OJDPEFͷίʔυϙΠϯτ wॻهૉΫϥελ wάϦϑ͸จࣈͷܗ

Slide 19

Slide 19 text

૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ ϑΥϯτʹؚ·ΕΔςʔϒϧͷྫ wHMZQςʔϒϧ wάϦϑ*%ʹରԠ͢ΔάϦϑͷܗঢ় wDNBQςʔϒϧ wίʔυϙΠϯτͱάϦϑ*%ͷରԠ

Slide 20

Slide 20 text

૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ DNBQςʔϒϧΛॻ͖׵͑Δ 6 6 ૿ ٢

Slide 21

Slide 21 text

૿ా͕٢ాʹͳΔ8FCϑΥϯτΛ࡞Δ DNBQςʔϒϧΛॻ͖׵͑Δ 6 6 ૿ ٢

Slide 22

Slide 22 text

GPOUUPPMT ϓϩάϥϚʔͳͷͰϑΥϯτΛϓϩάϥϜͰ࡞Δ w1ZUIPOͰϑΥϯτΛૢ࡞͢ΔϥΠϒϥϦ w(PPHMF΍"EPCF΋࢖͍ͬͯΔ

Slide 23

Slide 23 text

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})

Slide 24

Slide 24 text

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, {} )

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

૿ా͕૿͑ͨˠ٢ా͕٢͑ͨ໰୊

Slide 27

Slide 27 text

૿ాͷͱ͖͚ͩ٢ాʹ͍ͨ͠

Slide 28

Slide 28 text

ϦΨνϟʢ߹ࣈʣ ෳ਺ͷάϦϑͷฒͼΛҰͭͷάϦϑʹ͢Δ ffi f != != (BSBNPOE1SFNJFS1SP 'JSB$PEF ͔ͮΒ͖

Slide 29

Slide 29 text

ϦΨνϟʢ߹ࣈʣ ෳ਺ͷจࣈͷฒͼΛҰͭͷάϦϑʹ͢Δ ૿ా ٢ా

Slide 30

Slide 30 text

0QFO5ZQFͷMJHBGFBUVSF (46#ςʔϒϧͰ࣮૷͞ΕΔ languagesystem DFLT dflt; feature liga { substitute cid13827 cid27065 by cidmasuda; } liga;

Slide 31

Slide 31 text

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)) )

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

λΠϜϥΠϯ Šࢥ͍ͭ͘ Ϛωʔδϟʢ٢ాʣͱ߹ҙ Š։ൃ։࢝ ŠάϦϑͷஔ׵͕׬੒ Šํ਑Λมߋ ŠϦΨνϟ׬੒ ŠϓϧϦΫΤετ׬੒ ŠϚʔδ ٢ాʹ͢ΔࢫΛࣾ಺ؔ܎ऀʹใࠂ Š൓ө

Slide 34

Slide 34 text

٢ా͕͖·ͨ͠ w͓૽͕ͤ͠·ͨ͠ wϑΥϯτʹखΛೖΕΔͱ͍͏खஈ wͨ·ʹ໾ʹཱͭ w4*-0QFO'POU-JDFOTF

Slide 35

Slide 35 text

࣍ճɺେ͖Ίͷຊాɻޤ͏͝ظ଴