SlideShare a Scribd company logo
1 of 15
Download to read offline
Implement Bopomofo
by OpenType font feature
Bobby Tung
董福興



@W3C Digital Publishing Workshop
KEIO Univ. Mita campus
2018/9/19
What is Bopomofo?
• A phonetic system for Mandarin education in Taiwan.

• Major input method for Han characters. →
Layout Rules for Bopomofo
• Bopomofo Ruby - implement and requirement 

W3C ebooks and i18n workshop 2013/6/4

https://bit.ly/2w3LEph

• "The Manual of The Phonetic Symbols 

of Mandarin Chinese"

Ministry of Education, Taiwan

https://bit.ly/2htvssE
HTML Markup
Light tone

<ruby>過<rt>˙ㄍㄨㄛ</rt></ruby>



2nd, 3rd, 4th tone marks

<ruby>醒<rt>ㄒㄧㄥˇ</rt></ruby>



Tabular ruby markup model(Only support by Firefox)

<ruby><rb>你<rb>好<rb>嗎<rt>ㄋㄧˇ<rt>ㄏㄠˇ<rt>˙ㄇㄚ</ruby>



→ HTML Ruby Markup Extensions
CSS Ruby Layout Module
ruby-position: inter-character; is support by Webkit.
Glyph issue
˙ U+02D9 DOT ABOVE
ˊ U+02CA MODIFIER LETTER ACUTE ACCENT
ˇ U+02C7 CARON
ˋ U+02CB MODIFIER LETTER GRAVE ACCENT
Source Han SansHelvetica
Source Han Sans traditional Chinese build fixed the glyphs of tone marks
Last step:
position of tone marks
Tone marks' position when Bopomofo placed on the top
It's ok but not readable for readers
on browser spec on browser spec
Last step:
position of tone marks
Tone marks' position when Bopomofo placed on the right side

2nd, 3rd, 4th tone marks should be placed to right side
on browser spec on browser spec
OpenType feature?
• Which OpenType feature should we use?

• Should we apply for new feature?

• Do browsers support those features?
Take a try!
Hard to imply with Layout
Engine. Try font feature
What OpenType features
should be used?
Do browsers support those
"never-used" features?
Let's make a sample font for a try!
(thanks @buttaiwan)
Browser's bug confirmed
harfbuzz OpenType
engine bug fixed.
Now works on Firefox,
Chrome and LibreOffice.
Ask expert for advice.

(thanks Dr. Ken Lunde @Adobe)
`vkrn`
`vert`
Almost done
Bopomofo for Dialect
• The requirement is raised by
WikiMedia Community in Taiwan.

• The font solution fully support it.

• We sent a proposal to ISO/IEC
JTC1 SC2/WG2 to add a missed
tone mark and replace sample
glyphs for Bopomofo block.
Font specification
• For horizontal writing, Light Tone is a middle dot in proper width

• 2nd, 3rd, 4th tone marks use `ruby` to adjust height.

• For vertical writing, Light Tone use `vert` to replace glyph.

• 2nd, 3rd, 4th tone marks use `vert` and `ruby` to replace glyphs to
combining characters then adjust the position. 

• For full specification, see repo: 

https://github.com/bobbytung/Bopomofo_on_Web
ˊ U+02CA ́ U+0301
ˇ U+02C7 ̌ U+030C
ˋ U+02CB ̀ U+0300
Conclusion
• Font issues are outside W3C

• Should we have a font community group?

• Could we solve other CJK issue in same way?
i.e. Japanese Kanbun(漢⽂文).

• How to published the solution in standardization
way? (an i18n note?)
Special Thanks
• Richard Ishida for usage and notes in i18n WG.

• Robin Berjon for HTML Ruby Markup Extensions

• Ishii Koji & fantasai for CSS ruby layout module level 1

• But Ko for making test font 

• Dr. Ken Lunde for advising proper font feature

• David Hyatt for implementing "ruby-position: inter-character"

• Jonathan Kew for fix harfbuzz engine's bug

• Xidorn Quan, Kevin Hsieh, Myles Maxfield, Niwa Ryosuke for browser support

• Selena Wei for submission proposal to ISO/IEC JTC1 WG2

More Related Content

Similar to Implement bopomofo by open type font feature

GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...João Paulo Rechi Vita
 
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...DaeHyun Sung
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
 
What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)Hung Wu Lo
 
MoZH propose
MoZH proposeMoZH propose
MoZH proposelittlebtc
 
State of CJK issues of LibreOffice,2020 edition
State of CJK issues of LibreOffice,2020 editionState of CJK issues of LibreOffice,2020 edition
State of CJK issues of LibreOffice,2020 editionShinji Enoki
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming languageTechnology Parser
 
The Crystal language *recently* update
The Crystal language *recently* updateThe Crystal language *recently* update
The Crystal language *recently* updatekarupanerura
 
Evolution or stagnation programming languages
Evolution or stagnation programming languagesEvolution or stagnation programming languages
Evolution or stagnation programming languagesDaniele Esposti
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageJohn Potocny
 
So You Think You Know 'Go'? The Go Programming Language
So You Think You Know 'Go'? The Go Programming LanguageSo You Think You Know 'Go'? The Go Programming Language
So You Think You Know 'Go'? The Go Programming LanguageAll Things Open
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaokeRenyuan Lyu
 
Search-Driven Programming
Search-Driven ProgrammingSearch-Driven Programming
Search-Driven ProgrammingEthan Herdrick
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back AgainMarkus Voelter
 
State of CJK issues of LibreOffice, 2018 edition
State of CJK issues of LibreOffice,  2018 editionState of CJK issues of LibreOffice,  2018 edition
State of CJK issues of LibreOffice, 2018 editionShinji Enoki
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalAndy Maleh
 

Similar to Implement bopomofo by open type font feature (20)

Bopomobo Ruby
Bopomobo RubyBopomobo Ruby
Bopomobo Ruby
 
GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...
 
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...
[Ubucon Asia 2021] The challenge of Using LibreOffice & Building Local Commun...
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
I35s
I35sI35s
I35s
 
What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)
 
MoZH propose
MoZH proposeMoZH propose
MoZH propose
 
State of CJK issues of LibreOffice,2020 edition
State of CJK issues of LibreOffice,2020 editionState of CJK issues of LibreOffice,2020 edition
State of CJK issues of LibreOffice,2020 edition
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming language
 
The Crystal language *recently* update
The Crystal language *recently* updateThe Crystal language *recently* update
The Crystal language *recently* update
 
Evolution or stagnation programming languages
Evolution or stagnation programming languagesEvolution or stagnation programming languages
Evolution or stagnation programming languages
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
 
So You Think You Know 'Go'? The Go Programming Language
So You Think You Know 'Go'? The Go Programming LanguageSo You Think You Know 'Go'? The Go Programming Language
So You Think You Know 'Go'? The Go Programming Language
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaoke
 
Search-Driven Programming
Search-Driven ProgrammingSearch-Driven Programming
Search-Driven Programming
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back Again
 
L10n mozmycampus-uum
L10n mozmycampus-uumL10n mozmycampus-uum
L10n mozmycampus-uum
 
State of CJK issues of LibreOffice, 2018 edition
State of CJK issues of LibreOffice,  2018 editionState of CJK issues of LibreOffice,  2018 edition
State of CJK issues of LibreOffice, 2018 edition
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
 

More from Bobby Tung

資訊近用與閱讀平權——歐盟與W3C的無障礙機制
資訊近用與閱讀平權——歐盟與W3C的無障礙機制資訊近用與閱讀平權——歐盟與W3C的無障礙機制
資訊近用與閱讀平權——歐盟與W3C的無障礙機制Bobby Tung
 
電子書的雙線發展史
電子書的雙線發展史電子書的雙線發展史
電子書的雙線發展史Bobby Tung
 
2021年台灣數位出版聯盟電子書線上直播課程
2021年台灣數位出版聯盟電子書線上直播課程2021年台灣數位出版聯盟電子書線上直播課程
2021年台灣數位出版聯盟電子書線上直播課程Bobby Tung
 
W3C數位出版組織說明與規格最新動態
W3C數位出版組織說明與規格最新動態W3C數位出版組織說明與規格最新動態
W3C數位出版組織說明與規格最新動態Bobby Tung
 
幾個中文排版訣竅,有效改善閱讀體驗
幾個中文排版訣竅,有效改善閱讀體驗幾個中文排版訣竅,有效改善閱讀體驗
幾個中文排版訣竅,有效改善閱讀體驗Bobby Tung
 
Emoji再來一次之送素還真進Unicode
Emoji再來一次之送素還真進UnicodeEmoji再來一次之送素還真進Unicode
Emoji再來一次之送素還真進UnicodeBobby Tung
 
從Epub製作看編輯流程轉型
從Epub製作看編輯流程轉型從Epub製作看編輯流程轉型
從Epub製作看編輯流程轉型Bobby Tung
 
我們需要中文公共領域作品的開放圖書館嗎?
我們需要中文公共領域作品的開放圖書館嗎?我們需要中文公共領域作品的開放圖書館嗎?
我們需要中文公共領域作品的開放圖書館嗎?Bobby Tung
 
自己的Emoji自己造
自己的Emoji自己造自己的Emoji自己造
自己的Emoji自己造Bobby Tung
 
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)Bobby Tung
 
國外電子書發展近況報告
國外電子書發展近況報告國外電子書發展近況報告
國外電子書發展近況報告Bobby Tung
 
面對電子書的下一波機會:迎接EPUB 3
面對電子書的下一波機會:迎接EPUB 3面對電子書的下一波機會:迎接EPUB 3
面對電子書的下一波機會:迎接EPUB 3Bobby Tung
 
下個世代的數位編輯
下個世代的數位編輯下個世代的數位編輯
下個世代的數位編輯Bobby Tung
 
電子書的下一個未來
電子書的下一個未來電子書的下一個未來
電子書的下一個未來Bobby Tung
 
為什麼我們需要中文排版標準,以及幾項中文的排版特色
為什麼我們需要中文排版標準,以及幾項中文的排版特色為什麼我們需要中文排版標準,以及幾項中文的排版特色
為什麼我們需要中文排版標準,以及幾項中文的排版特色Bobby Tung
 
當數位出版成為出版的一天
當數位出版成為出版的一天當數位出版成為出版的一天
當數位出版成為出版的一天Bobby Tung
 
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求Bobby Tung
 
出版商不能不了解的EPUB 3
出版商不能不了解的EPUB 3出版商不能不了解的EPUB 3
出版商不能不了解的EPUB 3Bobby Tung
 
アジアの電子書籍事情
アジアの電子書籍事情アジアの電子書籍事情
アジアの電子書籍事情Bobby Tung
 

More from Bobby Tung (20)

資訊近用與閱讀平權——歐盟與W3C的無障礙機制
資訊近用與閱讀平權——歐盟與W3C的無障礙機制資訊近用與閱讀平權——歐盟與W3C的無障礙機制
資訊近用與閱讀平權——歐盟與W3C的無障礙機制
 
電子書的雙線發展史
電子書的雙線發展史電子書的雙線發展史
電子書的雙線發展史
 
2021年台灣數位出版聯盟電子書線上直播課程
2021年台灣數位出版聯盟電子書線上直播課程2021年台灣數位出版聯盟電子書線上直播課程
2021年台灣數位出版聯盟電子書線上直播課程
 
W3C數位出版組織說明與規格最新動態
W3C數位出版組織說明與規格最新動態W3C數位出版組織說明與規格最新動態
W3C數位出版組織說明與規格最新動態
 
幾個中文排版訣竅,有效改善閱讀體驗
幾個中文排版訣竅,有效改善閱讀體驗幾個中文排版訣竅,有效改善閱讀體驗
幾個中文排版訣竅,有效改善閱讀體驗
 
Emoji再來一次之送素還真進Unicode
Emoji再來一次之送素還真進UnicodeEmoji再來一次之送素還真進Unicode
Emoji再來一次之送素還真進Unicode
 
從Epub製作看編輯流程轉型
從Epub製作看編輯流程轉型從Epub製作看編輯流程轉型
從Epub製作看編輯流程轉型
 
我們需要中文公共領域作品的開放圖書館嗎?
我們需要中文公共領域作品的開放圖書館嗎?我們需要中文公共領域作品的開放圖書館嗎?
我們需要中文公共領域作品的開放圖書館嗎?
 
自己的Emoji自己造
自己的Emoji自己造自己的Emoji自己造
自己的Emoji自己造
 
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)
COSCUP 2015 中文排版需求以及我在W3C看到的事情(薄碼版)
 
國外電子書發展近況報告
國外電子書發展近況報告國外電子書發展近況報告
國外電子書發展近況報告
 
面對電子書的下一波機會:迎接EPUB 3
面對電子書的下一波機會:迎接EPUB 3面對電子書的下一波機會:迎接EPUB 3
面對電子書的下一波機會:迎接EPUB 3
 
下個世代的數位編輯
下個世代的數位編輯下個世代的數位編輯
下個世代的數位編輯
 
電子書的下一個未來
電子書的下一個未來電子書的下一個未來
電子書的下一個未來
 
為什麼我們需要中文排版標準,以及幾項中文的排版特色
為什麼我們需要中文排版標準,以及幾項中文的排版特色為什麼我們需要中文排版標準,以及幾項中文的排版特色
為什麼我們需要中文排版標準,以及幾項中文的排版特色
 
當數位出版成為出版的一天
當數位出版成為出版的一天當數位出版成為出版的一天
當數位出版成為出版的一天
 
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求
談2013 EPUB 3 規範的變化 以及如何符合台灣在地需求
 
出版商不能不了解的EPUB 3
出版商不能不了解的EPUB 3出版商不能不了解的EPUB 3
出版商不能不了解的EPUB 3
 
認識EPUB
認識EPUB認識EPUB
認識EPUB
 
アジアの電子書籍事情
アジアの電子書籍事情アジアの電子書籍事情
アジアの電子書籍事情
 

Recently uploaded

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Recently uploaded (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Implement bopomofo by open type font feature

  • 1. Implement Bopomofo by OpenType font feature Bobby Tung 董福興
 
 @W3C Digital Publishing Workshop KEIO Univ. Mita campus 2018/9/19
  • 2. What is Bopomofo? • A phonetic system for Mandarin education in Taiwan. • Major input method for Han characters. →
  • 3. Layout Rules for Bopomofo • Bopomofo Ruby - implement and requirement 
 W3C ebooks and i18n workshop 2013/6/4
 https://bit.ly/2w3LEph • "The Manual of The Phonetic Symbols 
 of Mandarin Chinese"
 Ministry of Education, Taiwan
 https://bit.ly/2htvssE
  • 4. HTML Markup Light tone
 <ruby>過<rt>˙ㄍㄨㄛ</rt></ruby>
 
 2nd, 3rd, 4th tone marks <ruby>醒<rt>ㄒㄧㄥˇ</rt></ruby>
 
 Tabular ruby markup model(Only support by Firefox)
 <ruby><rb>你<rb>好<rb>嗎<rt>ㄋㄧˇ<rt>ㄏㄠˇ<rt>˙ㄇㄚ</ruby>
 
 → HTML Ruby Markup Extensions
  • 5. CSS Ruby Layout Module ruby-position: inter-character; is support by Webkit.
  • 6. Glyph issue ˙ U+02D9 DOT ABOVE ˊ U+02CA MODIFIER LETTER ACUTE ACCENT ˇ U+02C7 CARON ˋ U+02CB MODIFIER LETTER GRAVE ACCENT Source Han SansHelvetica Source Han Sans traditional Chinese build fixed the glyphs of tone marks
  • 7. Last step: position of tone marks Tone marks' position when Bopomofo placed on the top It's ok but not readable for readers on browser spec on browser spec
  • 8. Last step: position of tone marks Tone marks' position when Bopomofo placed on the right side
 2nd, 3rd, 4th tone marks should be placed to right side on browser spec on browser spec
  • 9. OpenType feature? • Which OpenType feature should we use? • Should we apply for new feature? • Do browsers support those features?
  • 10. Take a try! Hard to imply with Layout Engine. Try font feature What OpenType features should be used? Do browsers support those "never-used" features? Let's make a sample font for a try! (thanks @buttaiwan) Browser's bug confirmed harfbuzz OpenType engine bug fixed. Now works on Firefox, Chrome and LibreOffice. Ask expert for advice.
 (thanks Dr. Ken Lunde @Adobe) `vkrn` `vert`
  • 12. Bopomofo for Dialect • The requirement is raised by WikiMedia Community in Taiwan. • The font solution fully support it. • We sent a proposal to ISO/IEC JTC1 SC2/WG2 to add a missed tone mark and replace sample glyphs for Bopomofo block.
  • 13. Font specification • For horizontal writing, Light Tone is a middle dot in proper width • 2nd, 3rd, 4th tone marks use `ruby` to adjust height. • For vertical writing, Light Tone use `vert` to replace glyph. • 2nd, 3rd, 4th tone marks use `vert` and `ruby` to replace glyphs to combining characters then adjust the position. 
 • For full specification, see repo: 
 https://github.com/bobbytung/Bopomofo_on_Web ˊ U+02CA ́ U+0301 ˇ U+02C7 ̌ U+030C ˋ U+02CB ̀ U+0300
  • 14. Conclusion • Font issues are outside W3C • Should we have a font community group? • Could we solve other CJK issue in same way? i.e. Japanese Kanbun(漢⽂文). • How to published the solution in standardization way? (an i18n note?)
  • 15. Special Thanks • Richard Ishida for usage and notes in i18n WG. • Robin Berjon for HTML Ruby Markup Extensions • Ishii Koji & fantasai for CSS ruby layout module level 1 • But Ko for making test font • Dr. Ken Lunde for advising proper font feature • David Hyatt for implementing "ruby-position: inter-character" • Jonathan Kew for fix harfbuzz engine's bug • Xidorn Quan, Kevin Hsieh, Myles Maxfield, Niwa Ryosuke for browser support • Selena Wei for submission proposal to ISO/IEC JTC1 WG2