自动断字 ( Auto Hyphenation ) 是什么,为什么你的 App 里应该使用它

 

和宽度恒定的汉字不同,西文单词的长度是一个变量。这就给文章的排版带来了对齐上的问题。无论是两端对齐、靠左还是靠右对齐都看起来不够优雅。在正式的文本中,往往使用断字(Hyphenation)来缓和这个问题。望文生义的来看 hyphenation 这个词,就是用 hyphen(短横 - )将单词断开。正确的断字只能以音节为单位,比如 impeachment 可以断为 impeach-ment 或 im-peachment 但不能断为 impe-achment。

直观的看下区别,左为断字前,右为断字后:

 

在铅字时代,编辑们需要人工断字。幸运的是,比较现代的排版工具基本都已经提供了自动断字的功能,注意下面两幅截图中文字的右侧边缘,不难看出断字前后的区别:

 

除了使排版更加优雅,在寸土寸金的移动设备屏幕上节省空间的意义也不容小觑。或许有同学在想,我的 App 中基本都是中文,断字对我应该没什么作用。其实,在中英文混排中没有断字仍会影响阅读体验:

 

下面我们来看下具体在 iOS / Android 上如何实现自动断字

iOS 中非常简单,TextKit 提供了良好的自动断字支持,可以通过设置 hyphenationFactor 属性非常方便的实现自动断字:

 

Android 加入自动断字的时间比较晚,Android 5.0 中对文字的显示和渲染进行了一系列的改进,其中就包括了对 TextView 默认开启自动断字。基本上是移植了 TeX 相应的算法和模型

感兴趣的同学可以看下 Android Dev Summit 2015 上的相关主题:

https://www.youtube.com/watch?v=GZ0eKqvzJa8

https://speakerdeck.com/raphlinus/android-textual-layout

 

以 Android 5.0+ 约 25% 的占有率,多少有点远水解不了近渴。好在我们还有其他选择:

 

https://github.com/bluejamesbond/TextJustify-Android

 

这是一个很轻量的实现,与 TeX 的大而全(支持 67 种语言)不同,TextJustify-Android 目前只支持 英语、德语和法语。

TextJustify-Android 自动分词的实际效果:

原文地址

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值