Slide 1

Slide 1 text

׽ࣈόφʔܳ @ୈ26ճγΣϧܳษڧձ େࡕαςϥΠτ (2016.12.25) MSR (@msr386)

Slide 2

Slide 2 text

໨࣍ ➤ ࣗݾ঺հ ➤ όφʔܳͱ͸ ➤ banner, figlet, toilet ➤ toiletίϚϯυͷ֦ு (׽ࣈΛ͍ͩ͘͞) ➤ ·ͱΊ

Slide 3

Slide 3 text

ࣗݾ঺հ ➤ ϋϯυϧωʔϜ: MSR (@msr386) ➤ C++ϓϩάϥϛϯάɺαʔόʔӡ༻͕ಘҙ ➤ Chromium Contributor ➤ Webϒϥ΢β࡞͍ͬͯ·͢
 http://app.tungsten-start.net/

Slide 4

Slide 4 text

όφʔܳͱ͸ ➤ ఆ͕ٛ͋Δͷ͔͸ఆ͔Ͱ͸ͳ͍͕… ➤ ҰݴͰݴ͑͹ʮจࣈΛ໨ཱͨͤΔγΣϧܳʯ ➤ ར༻͞ΕΔ୅දతͳίϚϯυʹbanner, figlet, toilet͕͋Δ ➤ όφʔܳͷྫ ➤ ಥવͷࢮΛϫϯϥΠφʔͰදࣔ ➤ ໨ཱͨͤͨ΋ͷΛwallίϚϯυͰ୺຤ʹҰ੪ૹ৴

Slide 5

Slide 5 text

όφʔܳͷ୅දతͳίϚϯυ (1) - BANNER ➤ ੲ͔Β͋Δ఻౷తɺ͔ͭݪ࢝తͳίϚϯυ ➤ GNUܥͱBSDܥͰ͸ରԠҾ਺΍ද͕ࣔશ͘ҟͳΔ ➤ GNUܥ͸ͨͩ#Ͱେ͖͚ͨͩ͘͠ͰɺҾ਺͸Ұ੾ରԠ͠ͳ͍ ➤ BSDܥ͸͔ͬ͜Α͘දࣔ͞ΕΔ͕ͳ͔ͥॎʹදࣔͯ͘͠Δ
 ˠԣʹදࣔ͢ΔγΣϧ͕ܳొ৔ (※͜Ε͕όφʔܳͷ͸͡·Γ)

Slide 6

Slide 6 text

➤ https://twitter.com/grethlen/status/778952287339163649 BANNERίϚϯυ࣮ߦྫ

Slide 7

Slide 7 text

BANNERίϚϯυ࣮ߦྫ $ banner -w 50 a
 ### 
 ########
 ########## ##### 
 #### #### ######
 ## ## ## 
 ## ## # 
 ## ## ## 
 ##################
 ###################
 ##################
 ## 
 #
 $

Slide 8

Slide 8 text

όφʔܳͷ୅දతͳίϚϯυ (2) - FIGLET ➤ bannerίϚϯυ͔Βදݱྗ͕ਐԽ ➤ ༷ʑͳදࣔํࣜ ➤ ඪ४౥ࡌͷϑΥϯτ͕๛෋(ΧλΧφͷΈ΍RTLͳ΋ͷ΋)
 showfigfonts ͰҰཡදࣔՄೳ ➤ ϑΥϯτ͸ࣗ࡞Մೳ ➤ ݱࡏɺ։ൃఀࢭத? (࠷৽൛͸2.2.5ɺ2012೥5݄Ҏ߱ߋ৽͞Ε͍ͯͳ͍)

Slide 9

Slide 9 text

FIGLETίϚϯυ࣮ߦྫ $ figlet FIGlet
 _____ ___ ____ _ _ 
 | ___|_ _/ ___| | ___| |_ 
 | |_ | | | _| |/ _ \ __|
 | _| | | |_| | | __/ |_ 
 |_| |___\____|_|\___|\__|
 
 $ figlet -f roman FIGlet
 oooooooooooo ooooo .oooooo. oooo . 
 `888' `8 `888' d8P' `Y8b `888 .o8 
 888 888 888 888 .ooooo. .o888oo 
 888oooo8 888 888 888 d88' `88b 888 
 888 " 888 888 ooooo 888 888ooo888 888 
 888 888 `88. .88' 888 888 .o 888 . 
 o888o o888o `Y8bood8P' o888o `Y8bod8P' "888" 
 
 
 
 $

Slide 10

Slide 10 text

όφʔܳͷ୅දతͳίϚϯυ (3) - TOILET ➤ figletͷஔ͖׵͑Λ໨తͨ͠ίϚϯυ ➤ Ծ໊ϑΥϯτඪ४౥ࡌ ➤ ΧϥʔදࣔɺHTMLग़ྗରԠ ➤ figletͱಉ༷ɺϑΥϯτࣗ࡞Մೳ(figletͱ͸ܗ͕ࣜҟͳΔ) ➤ ϥΠηϯε͸௝͍͠WTFPL (ύϒϦοΫϥΠηϯε͔ͩΒ޷͖ʹ͠΍͕Ε) ➤ ϗʔϜϖʔδ( http://caca.zoy.org/wiki/toilet )͸Ͳ͏ݟͯ΋͏˓͜

Slide 11

Slide 11 text

TOILETίϚϯυ࣮ߦྫ $ toilet ͻΒ͕ͳΧλΧφOK׽ࣈ×
 m m m m m 
 m # m "" "m m" " mmm#m"mm # 
 ""#" # # "mm#""m "m # m"" "mmm#"""# 
 m" #"m #m""""m # # m# # # m" # 
 # # " # # # " m"""#m m" # 
 "mmm" mmm"" # "m" "mmm" " m" "m" 
 
 
 m m m 
 #mmmm # # mmmm m m 
 # m" "mmm#"""# "mmmm#"""" m" "m # m" m m 
 m" "mm" m" # # # # #m# "m" 
 m" m" # # # # # #m m" "m 
 mm"" m" "m" m" #mm# # "m 
 
 $

Slide 12

Slide 12 text

΍ͬͺΓ׽ࣈ͕΄͍͠

Slide 13

Slide 13 text

TOILETͷϑΥϯτσʔλ ➤ ৔ॴ: /usr/local/share/figlet ͳͲ ➤ ֦ுࢠ: .tlf (※figletܗࣜ(.flf)΋࢖༻Մೳ) ➤ ϑΥϯτσʔλ͸zipѹॖͯ͠΋Α͍ ➤ จࣈίʔυ͸Unicode
 →׽ࣈ΋ֆจࣈ΋(͠Α͏ͱࢥ͑͹)දࣔͰ͖Δ!

Slide 14

Slide 14 text

ϑΥϯτσʔλͷܗࣜʢ֓ཁʣ ➤ 1ߦ໨͸tlf2a$ͱ͍͏ϔομ ɺ1จࣈ͋ͨΓͷߦ਺ͳͲΛఆٛ ➤ จࣈ͸UnicodeॱͰ֨ೲ͞Ε͍ͯΔ ➤ จࣈఆٛ ➤ 1ߦ໨͸Unicode஋ͱจࣈΛهड़ ➤ 2ߦ໨Ҏ߱ʹରԠ͢ΔจࣈΛඳ͘ ➤ ֤ߦͷऴ୺͸@ͰऴΘΔ ➤ จࣈ1ݸͷ࠷ऴߦ͸@@ͰऴΘΔ 0x3042 ͋
 m @ 
 mmm#m"" @ 
 #mm#m @ 
 m# m" "m @ 
 # "m" # @ 
 "m" mm" @ 
 @ 
 @@

Slide 15

Slide 15 text

ϑΥϯτσʔλฤूྫ ➤ ascii9.tlfΛల։ͯ͠add.tlfʹมߋͯ͠ɺ࣍ͷจࣈΛ௥Ճ 0x4ECA ࠓ
 # @
 m” “m @
 mm" --- "mm @
 mmmmm @
 m @
 m" @
 @
 @@ 0x65E5 ೔
 mmmmmmmmmm @
 # # @
 #mmmmmmmm# @
 # # @
 # # @
 mmmmmmmmmm @
 @
 @@ 0x1F359 
 m @
 # # @
 # # @
 # mmm # @
 # #m# # @
 mmmmmmmmm @
 @
 @@

Slide 16

Slide 16 text

࣮ߦྫ $ toilet -f add ࠓ೔͸
 # mmmmmmmmmm m m 
 m" "m # # "m m #mm # # 
 mm" --- "mm #mmmmmmmm# m" """# # # 
 mmmmm # # # # # mmm # 
 m # # # mm"""#m # #m# # 
 m" mmmmmmmmmm "# "mmm" " mmmmmmmmm 
 
 
 $

Slide 17

Slide 17 text

Ͱ΋…

Slide 18

Slide 18 text

࢖͏จࣈΛ͍͍ͪͪ
 ௥Ճ͢Δͷ͸ΊΜͲ͍

Slide 19

Slide 19 text

ࣗಈੜ੒͍ͨ͠ ➤ toiletͷιʔείʔυʹ͸ caca2tlf ͱ͍͏πʔϧ͕ଘࡏ ➤ caca2tlf ͸ libcaca಺෦Ͱ࢖༻͢ΔϑΥϯτΛtlfʹม׵͢Δπʔϧ
 (※libcaca͸ΞεΩʔΞʔτΛੜ੒͢ΔάϥϑΟοΫϥΠϒϥϦɺtoiletͰ࢖༻) ➤ libcaca಺෦Ͱ࢖༻͢ΔϑΥϯτ͸libcacaͷmakefontπʔϧͰੜ੒͢Δ ͔͠͠ɾɾɾ ➤ libcaca಺෦Ͱ࢖༻͢ΔϑΥϯτ͸׽ࣈ͕ੜ੒ର৅֎
 ͦͷ··ͩͱcaca2tlfͰ͸׽ࣈ͕ग़ͯ͜ͳ͍ ➤ makefontͱlibcacaͷιʔείʔυΛมߋ͠ɺίϯύΠϧ͢Δඞཁ͕͋Δ

Slide 20

Slide 20 text

׽ࣈΛࣗಈੜ੒͢Δʹ͸ 1. toilet, libcacaͷιʔείʔυΛೖख
 
 2. toiletΛίϯύΠϧ
 
 
 3. libcacaΛbootstrapͱconfigure·Ͱ࣮ߦ $ git clone https://github.com/cacalabs/toilet.git
 $ git clone https://github.com/cacalabs/libcaca.git $ cd toilet
 $ ./bootstrap
 $ ./configure
 $ make $ cd libcaca
 $ ./bootstrap
 $ ./configure

Slide 21

Slide 21 text

׽ࣈΛࣗಈੜ੒͢Δʹ͸ 4. libcaca/tools/makefont.cͷάϩʔόϧఆ਺഑ྻ blocklist ʹCJK౷߹׽ࣈΤϦΞ (0x3d00ʙ0x9fd5)Λ௥Ճ
 5. makefontΛίϯύΠϧ diff --git a/tools/makefont.c b/tools/makefont.c
 index 226c883..7c58c79 100644
 --- a/tools/makefont.c
 +++ b/tools/makefont.c
 @@ -61,6 +61,7 @@ static unsigned int const blocklist[] =
 0x3000, 0x3040, /* CJK Symbols and Punctuation: 。「」 */
 0x3040, 0x30a0, /* Hiragana: で す */
 0x30a0, 0x3100, /* Katakana: ロ ル */
 + 0x3d00, 0x9fd5, /* CJK unified Ideographs */
 0xff00, 0xfff0, /* Halfwidth and Fullwidth Forms: A, B, C, a, b, c */
 0x10400, 0x10450, /* Deseret: */
 0, 0

Slide 22

Slide 22 text

׽ࣈΛࣗಈੜ੒͢Δʹ͸ 6. ಺ଂϑΥϯτΛੜ੒͠ɺcaca/mono*.dataΛ্ॻ͖
 
 
 ˞ͦΕͧΕ9ϙΠϯτ༻ͱ12ϙΠϯτ༻Λੜ੒ɻmono9ͱmonobold12͸ݻఆ
 ˞ୈ2Ҿ਺ʹϑΥϯτ໊ͱϙΠϯτ਺Λهड़ɻ͜ΕͰਖ਼͍͔͠͸ະ֬ೝ
 ˞ୈ3Ҿ਺͸DPI஋(௨ৗ96)ɺୈ4Ҿ਺͸bpp(1ϐΫηϧ͋ͨΓͷϏοτ਺) 7. libcacaΛίϯύΠϧɺΠϯετʔϧ
 8. toiletͷtools/caca2tlfΛ࣮ߦ
 [libcaca/tools] $ ./makefont mono9 "IPA Gothic 9" 96 1 > ../caca/mono9.data
 [libcaca/tools] $./makefont monobold12 "IPA Gothic 12" 96 1 > ../caca/monobold12.data [libcaca] $ make
 [libcaca] $ sudo make install [toilet/tools] $ ./caca2tlf "Monospace 9" > /usr/local/share/figlet/ipa9
 [toilet/tools] $ ./caca2tlf "Monospace Bold 12" > /usr/local/share/figlet/ipa12

Slide 23

Slide 23 text

࣮ߦྫ $ toilet -f ipa12 ׽ࣈOK
 
 
 
 ## # ## 
 # ########## ############ ## # # 
 # ## # ## ## # # ## ## 
 ######### ## ## # # ## ## 
 # ## ## ## ## ######## ## # # ## # 
 # ## ## ## ## # # #### 
 # ######## ## # # ### 
 ## # # # ### 
 ########## ############## # # #### 
 # ## ############## # # ## # 
 # ########## # # # ## ## 
 # #### # ## ## ## ## 
 # ## ## # #### ## # 
 # ## ## #####

Slide 24

Slide 24 text

׽ࣈੜ੒͸Մೳ͕ͩɾɾɾ ➤ CJK౷߹׽ࣈ(໿28,000ࣈ)ͷ͓͔͛Ͱ࣮ߦʹ͕͔͔࣌ؒΔ
 ϑΝΠϧαΠζ : ໿5MBʙ10MB
 ascii9.tlf(ඇѹॖ) : ໿290KB ➤ ͋·Γ៉ྷ͡Όͳ͍
 ϏοτϚοϓϑΥϯτͳΒ៉ྷʹͳΔ? ➤ αΠζ͕9ϙΠϯτͩͱ׽ࣈ͕ͭͿΕΔ

Slide 25

Slide 25 text

·ͱΊ ➤ όφʔܳͰ࢖༻͢Δ୅දίϚϯυ: banner, figlet, toilet ➤ toiletͷϑΥϯτ͸֦ுՄೳ ➤ ͦͷؾʹͳΕ͹׽ࣈදࣔ΋ֆจࣈ΋දࣔͰ͖Δ ➤ ׽ࣈͷࣗಈੜ੒͕͚ͨ͠Ε͹ 1. libcacaͷπʔϧmakefontΛվ଄ͯ͠libcacaΛίϯύΠϧɺΠϯετʔϧ 2. caca2tlfͰੜ੒ ➤ ࣗಈੜ੒͞ΕͨϑΥϯτϑΝΠϧ͸αΠζ͕େ͖͗ͯ͢ද͕ࣔ஗͍