主要观点:在构建韩语打字练习游戏“type.sam.today”时,想实现按键改变文本颜色,因韩语书写系统 Hangul 特点使此任务变复杂,文章阐述了构建文本着色系统所需的韩语键盘、Unicode 和 OpenType 的复杂性,包括 Hangul 音节结构、Unicode 多种表示形式的局限性及解决方法等。
关键信息:
- Hangul 由 10 个基本元音和 19 个辅音组成,按音节分组,共有 11172 个 Hangul 音节 Unicode 块。
- 韩语键盘可将 29 个 Jamo 挤在 26 个英文字母键上,打字时按发音顺序输入 Jamo 组成音节。
- Unicode 有多种 Hangul 字符表示形式,如“composed”(NFC)和“decomposed”(NFD),但都不能完美映射到按键输入。
- 10 键翻转手机的韩语布局因其简单性很受欢迎,文中后续重点关注 QWERTY 键盘。
- 韩语字体中 Jamo 的排列方式独特,不同元音和位置的辅音会使字体外观不同,部分 Hangul 音节是复合字形但并非所有都如此。
- 通过导入字体字形到专门程序标记路径与按键对应来填补差距,实现按键显示打字进度。
重要细节: - 以“Hangul”一词为例说明其 Jamo 组成及音节分组,如“ㅎ ㅏ ㄴ ㄱ ㅡ ㄹ”分为“한글”两组。
- 指出普通字符串到按键的规范化在搜索和过滤等方面有需求,如韩语搜索中“우”与“원”的匹配问题。
- 提到在处理字体字形时采取的一些高效策略,如初步归一化减少独特路径数量等。
- 最终在“type.sam.today”中实现按键显示打字进度,且该解决方案遵循了字体风格。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。