作者ChrisTorng (ChrisTorng)
看板Liu
标题Re: [问题] 补破网中补进的全形破折号
时间Thu Mar 9 14:15:46 2006
再补充一点:破折号应该要由「格子」的最左边界延伸到最右边界吗?
换个方式讲就是,破折号与左右的文字是否应该保持一点点间隙?
U+2014 █—█
U+2500 █─█
上面使用 U+2588 █ Full Block
在此例中,同样以细明体显示,但以不同的字型大小显示,仍会有一些小差异,
请您自己在记事本中试试。
以我的电脑,安装「新细明体更新套件」,「小字型」下,
U+2500 之 12 点字与左右 U+2588 有 1pixel 的空隙,
但 72 点字却没有空隙,127 点字则又有一点点小小的空隙。
针对这个问题,
我认为应该要有一点间隙,像 U+2014 就与前後保有一点点间隙,
而 U+2015 (水平线) 则没有保留间隙,
也因此使用接连两个占满整个宽度的 U+2500,即使不考虑字义,
以字型外观而言,仍然是不适当的。
如果破折号应该要固定使用两个字元连接在一起使用的话,
我认为应该要设计一个「前破折号」与「後破折号」,
其中「前破折号」的左边有留一点空间,但右边延伸到边界,
「後破折号」的左边也延伸到边界,以与「前破折号」相接,但右边要留一点空间。
如此设计编码的话,就变成有一个「语意上的符号」,
需要以两个「字元」组合来表达出外观。
我认为这并不合 Unicode 对文字/符号编码的本意。
(「一字/一符号」应该对应於「一个编码」)
我认为应该要以「非固定字宽」之「字型」的方式来解决这个问题,
也就是说在设计「字型」时,应该把 U+2014 这单一个字元设计为两个字元宽。
其实早就有这样的实例,比如在记事本或 Word 中,以「新细明体」看 WlWl
就会发现 W 比较宽 l 比较窄。
如果用「细明体」的话,W 与 l 的宽度都是一样的,
而两个英数半型符号加起来的宽度与一个全型文字或符号相等。
但即使是「细明体」,仍有违反固定字宽的字,如以呒虾米「‧‧」打出之:
U+00D7 × ×× Multiplication Sign (乘号)
U+00F7 ÷ ÷÷ Division Sign (除号)
在 Terminal 环境 (如 Telnet/BBS) 中有可能看不出上例的效果,
一定要在记事本或 Word 中观察才行。
以我用的 MultiTerm 环境来说,上述文字看起来与记事本中并无不同,
但如果你是亲自在里面打字的话,会发现打出 × 之後,
游标的位置与文字出现的位置会有所差异,而且叠越多个 × 就差越多,
这一定要亲自试验打字才会体会得出来。
这两个符号,我记得在以前 DOS 时代,以及 95/98 时代,是标准的全型字,
宽度与+-符号都一样,但进到 2000/XP 时代却变得不同了。
不过即使字宽比较窄,
在 Terminal 环境中只要左右空开适当的空间,就可以正确地显示出该符号。
但字宽比一般全型更宽的话,在 Terminal 环境有可能会有更多显示上的异常,
比如破折号的後半端与下一个字重叠,
或是後半端被下一个字截掉,仅剩前半显示出来,
或者以 MultiTerm 的例子,可能是原本可以显示在 80x25 内的文字,却被挤出萤幕右侧,
或造成其他程式在计算字型宽度上的错误。
因此我认为,Unicode 定义破折号的单一编码为 U+2014 是合理的,
而字型厂商理应将此符号设计为两个全型宽,
但考量到该字型用在不同的环境中 (主要是需要定宽字的环境),
有可能会造成错误的显示结果,
因此仍然设计为一个全型宽,并且左右都已预留间隙。
也因此这个符号并不适合接连使用。
--
ChrisTorng
http://groups.msn.com/ChrisTorng
ChrisTorng 样式讯息记录 V2.1 正式推出
http://groups.msn.com/ChrisTorng/msn6messagelog.msnw
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.75.28.114
1F:推 linpien:破折号达人!! 03/09 14:31
2F:推 WMQ:U+2014或许是夹住号? 03/09 17:33
3F:推 solaris10:真的是太厉害了! 03/09 20:46
4F:推 oktryit:@@ 推~~ 03/09 21:27
5F:推 MilchFlasche:破折号的那种横线和夹注号似乎本来就是通用的? 03/12 20:21
6F:推 chris:果然不负 Chris 这个名字?! 伟人!:D 03/18 18:22