By convention, 1/2 Em wide characters of East Asian legacy encodings are called “halfwidth” (or hankaku characters in Japanese); the others are called correspondingly “fullwidth” (or zenkaku) characters. Legacy encodings often use a single byte for the halfwidth characters and two bytes for the fullwidth characters. In the Unicode Standard, no such distinction is made, but understanding the distinction is often necessary when interchanging data with legacy systems, especially when fixed-size buffers are involved.
ED2. East Asian Fullwidth (F): All characters that are defined as Fullwidth in the Unicode Standard [Unicode] by having a compatibility decomposition of type <wide> to characters elsewhere in the Unicode Standard that are implicitly narrow but unmarked.
Ambiguous characters occur in East Asian legacy character sets as wide characters, but as narrow (i.e., normal-width) characters in non-East Asian usage.
ED3. East Asian Halfwidth (H): All characters that are explicitly defined as Halfwidth in the Unicode Standard by having a compatibility decomposition of type <narrow> to characters elsewhere in the Unicode Standard that are implicitly wide but unmarked, plus U+20A9 ₩ WON SIGN.
(以下是关于U+20A9 ₩这个字符的专门讨论,略。)
When converting a DBCS mixed-width encoding to and from Unicode, the fullwidth characters in such a mixed-width encoding are mapped to the fullwidth compatibility characters in the FFxx block, whereas the corresponding halfwidth characters are mapped to ordinary Unicode characters (for example, ASCII in U+0021..U+007E, plus a few other scattered characters).
In the context of interoperability with DBCS character encodings, this restricted set of Unicode characters in the General Scripts area can be construed as halfwidth, rather than fullwidth. (This applies only to the restricted set of characters that can be paired with the fullwidth compatibility characters.)
In the context of interoperability with DBCS character encodings, all other Unicode characters that are not explicitly marked as halfwidth can be construed as fullwidth.
In any other context, Unicode characters not explicitly marked as being either fullwidth or halfwidth compatibility forms are neither halfwidth nor fullwidth.
Seen in this light, the “halfwidth” and “fullwidth” properties are not unitary character properties in the same sense as “space” or “combining” or “alphabetic.” They are, instead, relational properties of a pair of characters, one of which is explicitly encoded as a halfwidth or fullwidth form for compatibility in mapping to DBCS mixed-width character encodings.
排版时用连续的全角数字真是难看,这不是任何现有字体能解决的,阿拉伯数字全角化是打肿脸充胖子,你不能指责字体制作者抽脸技术不好。如果遇到必须连续的情况,还不如用汉字或苏州码子(我有做对应的字体哦)。
至于好不好看,就只能说是个人审美问题了。我是觉得自己的审美是越活越回去了,现在是看铅字时代的东西越看越顺眼,感觉有一种朴素的美……对年轻人来说这可能不是好现象。
另外我看老报纸上的确是不太用阿拉伯数字的,比如说“五三三一四部队”放到今天几乎一定是会写成“53314部队”的,所以因为数字数量比较少的关系,全角反而更合适。只是后来不知什么年代就开始大规模使用阿拉伯数字了,正规出版物还好,现在一些门户网站上甚至会出现“美国1男子”这样的标题,看了让人想把网站编辑给掐死……
“全角反而更合适”此话怎讲?不觉得难看吗?
不过这也跟大陆搞的横排改革关系很大。本来不论什么文本统统横排之前,中文风格的直排文本和专门为照顾中西混排而横排的科技文本泾渭分明。全部改横排是很多乱象的肇始。
但你的实践表明全角数字才是那老鼠屎,我立即就感觉到不对劲,紧接着就是不能忍,不能忍到我必须先指出这点然后才提到你文章的内容。为什么?你的理论哪里错了?
你的理论貌似只错了一个点:量变到质变的转折点,就是数字连续超过2个就不再是中文——质变来得太快。
求同存异吧。至少我也赞同在明确的中西混排的环境下是应该用半角的(所以你看上文中有一段我用的全都是半角)。只不过我认为在西文和数字数量比较少的时候仍然可以通过用全角的方式把英数同质化,维持纯中文环境而已。
顺及,我最近在研究CSS3,准备有空的话做个个人主页玩玩……虽然好像没有什么有用的内容可以放上去……
可惜只有手机网不便查资料。
不过我承认全角本身确实没有半角好看,字距是个很大的问题,限于字符的形状,再拉宽也没有用,像是“11”这样的字符要保持等宽怎么样也只能靠拉大字距。不过我也没说全角本身比半角好看。只不过是我认为中日文环境中,在英数数量不多的情况下为了整体的美感可以牺牲一下字符本身的美感而已。
关于大小的问题,我刚才量了一下,我常用的IPAMicho和IPAGothic里假名的基线比汉字高,英数不论全半角基线又比假名高。为什么这样设计我也不是很清楚。
我都说了是字符,你别提字体了。单个字符只要动脑总是可以设计得好看——但排版起来你会发现居然有字符是定义了排版不允许自由发挥:全角符号就是这种类型。
——谈现成字体好了:汉字跟字母紧挨着效果触目惊心是吧?加空格呗(实际上空格字符不止一个,Unicode有好几种宽度的空格字符),你有没有看过我转钱钟书那篇文?
但全角字符跟全角字符紧挨着的话(连续2个),那效果也触目惊心,请问有什么字符能剪短间距的?
美观…你为什么不用汉字或苏码?中文里没数字吗?
算了我不想继续争论下去了。最简单的解决问题的方法肯定是尽量能用汉字就用汉字,这点我非常同意。
而且无论如何现在事实上的的互联网标准对中日文实在是太不友好了,比如说中西字符之间加间隔吧,本来这应当是交给CSS而不是靠内容的提供者手动空格实现的。再加上现在人们又普遍不讲究这些,我们在这里争来争去也根本改变不了什么不是吗……
我只谈你这篇文的情况。我对你的美感有些怀疑,于是发问。
==============
是我没弄明白你的意思。我以为你是说黑色的字面部分的尺寸问题,但实际上你指的是连上下左右的空白部分都算上的那个方盒子的尺寸,所以才跟你扯什么基线——抱歉用词不当,汉字好像没有基线一说——的事。
那既然是这样的话,你说“实际书写中假名和汉字一样大不好看,反而小一点更搭配”那就又是你自己的个人审美了,不然日本就永远都只做那些不等宽字体就好了,还做了那么多等宽字体有什么用。
不过你还是赢了。我突然觉得在网络时代去追求什么中文等宽根本就是自讨没趣。因为我刚刚想到很多常用的网页字体本身就是不等宽的,典型例子比如微软雅黑,就算是全角标点也愣是能给你做成不等宽的(嘿,如此看来方正接微软外包的人也“没查全角的定义”)。我去把原文改成半角还不成么。
但即便是这样你也不能否认等宽本身的审美价值。
顺及,我抱怨网络环境的是因为我觉得在半角字符前后手动空格实在是很傻的事,但也没有更好的办法。
对了,约炮大作战二季开始有百合角色,但这百合境界太低,我预计会给2★。
至于微软雅黑那个我收回,抱歉我当时没亲自测试,印象中雅黑的一些全角标点不等宽所以就凭印象直接说了。今天测试了一下发现是我自己的印象有误。你说的那个Unicode陷阱我知道,我之前还跟你讨论过的。然后其他的一些常用字体,比如中易宋体,当然也不会有不等宽的情况。
那既然这样我还是把原文改回全角吧。当然这次不会不小心出现一长串数字连用的情况了。不过也不能完全改成汉字,正如你用的“6★”一样,我用阿拉伯数字也是表示这里有一点特殊含义的,相当于我给每一个分数档都起了一个用全角数字表示的专名。如果你一定要坚持认为全角数字不是数字,那就干脆单纯地把我用的全角数字当成和你用的“★”一样都是某种表示特殊含义的特殊符号就是了。这并非是一种折中理解,因为这也是我的本意之一。
2. 这同样也不是Unicode的问题,因为在Unicode之前的东亚字符集本身就有全半角之分,所以Unicode也不得不把全角字符原样保留下来。这跟Unicode不负责合并异体字是同样的道理。
3. 但Unicode确实是有规定字符的“宽度”的,只不过首先这个“宽度”不代表实际的字体宽度,其次机制比我以前所想象的的复杂得多。我发现Unicode每个字符都专门有一个East_Asian_Width属性,这里有一篇专门的文档来介绍这个属性的含义。
首先这里的“宽度”定义如下:
CJK符号中汉字和假名这个属性的值是Wide,而全角英数的这个属性值则是Fullwidth,按文档的解释,Fullwidth的意思是:
另外我文中用的引号,也就是搜狗等主流输入法所打出来的引号,在Unicode里这个属性是很诡异的“Ambiguous”类,也就是可以根据实际的语言环境随意解释的。所以从Unicode的角度来看这类字符确实“既不是全角又不是半角”,但是在中日文环境里,这些符号的确是被认为是Wide的:
(甲)Unicode字符集规定了字符的名义“宽度”(实际上就是该字符在原字符集内的编码长度),却没有规定排版中实际采用的真实宽度,这点可以留给字体任意发挥,就像是有些日文字体中假名的宽度比汉字小一样。
(乙)Unicode全角字符的理论“宽度”一定是与汉字和假名的理论“宽度”完全相同,这是由Fullwidth类的定义所决定的。而半角字符的理论“宽度”则与西文字符的理论“宽度”完全相同。
综上所述,在Unicode环境下,全角与半角字符的排版审美效果就只于字体有关,而与字符集无关了。至于为什么现实中中文字体中的全角英数与汉字等宽,而半角英数与汉字不等宽,这就只能解释为一种习惯使然了。
4. 那么为什么会有全角英数与汉字等宽的习惯?为什么你也会有想要“数字保持1/2汉字宽度”的需求?我个人认为这是铅字排版习惯的一种残留。我没见过真正的排字机,但如果我听说的铅字时代西文和数字铸字分1汉字宽和1/2汉字宽两种的事是真事的话,那么这种习惯就容易理解了:在铅字过渡到计算机的过程中,之所以会去做什么全角字符,就是为了把传统铅字排版中1汉字宽与1/2汉字宽英数铸字之间的区别照搬到电脑上。你想想为什么计算机字符集里也会用会有fullwidth和halfwidth这两个名词,很明显就是沿用的铅字排版术语。然而实际上所谓的1/2汉字宽英数铸字只不过是中国(日本我不知道)的国内习惯,西方的铅活字从一开始就没有保持1/2汉字宽等宽一说,所以再计算机时代人们也就很快地不在乎中国铅字时代的1/2汉字宽等宽英数习惯了,而把半角字符理解为与西方接轨的不等宽字符。但是全角字符这边,因为不存在什么与西方接轨的问题,所以仍然沿袭中国铅字时代的1汉字宽等宽铸字习惯至今。
所以说你想想我为什么一直在说铅字铅字铅字吧,我还说新华网自己的新闻至今还是用全角英数的,因为新华社是从铅字时代就开始从事新闻业了,而那时的报纸都是用1汉字宽等宽铸字的。而我去新华网上检查了一下,那些从别处转载来的新闻则都是用半角英数的,因为这些新报纸没有铅字排印的传统……也正是因此,我说我赞成使用全角英数就是在说我赞成铅字时代的审美观。
------------
编辑:把Em改成了“汉字宽”……汉字没有基线,用Em来做长度单位也不太合适(尽管日本人是把Em直接定义成一个“全角幅”宽度了),导致有些事表达起来很痛苦……
编辑:一开始我说进入计算机时代后人们自然而然地“把全角字符与1汉字宽英数铸字画上了等号”,后来又想到,这因果大概反了,不是先有了全角字符然后人们才把全角字符与1汉字宽铸字联系起来,而是全角字符从一开始就是为了在电脑上模拟1汉字宽英数铸字的效果而诞生的。当然全角字符还有避免在早期电脑系统上发生断行错误的优点,所以我只是猜想。
顺便吐槽:现在国际上关心CJK问题的果然全都是日本人……刚刚那篇文档的作者也是在啊逗比公司干活的日本人。明明中国大陆搞的GB2312 之类的东西当时也不比日本人晚很多的。
打2★很合理吧。
http://bgm.tv/m/topic/subject/4418
我在百合众里应该算是比较中间的派别了,最极端的那一排是作品里只要出现了一丁点BG就坚决不看的,最温和的那一排则是完全不管BG,只要两个女性角色关系亲近些就能YY。对我来说,虽然也能看BG,但百合和BG在大多数情况下是互斥的,虽然也有些例外的作品,比如少女革命这样的,但折旗这样的片子是绝对不可能属于例外的。
而且…这是我的同人ξ =_,=)
可惜不是一对。中文那对被Unicode合并成英文了。
U+201F
DOUBLE HIGH-REVERSED-9 QUOTATION MARK
Initial Punctuation
(‟)
我当时应该是指(❝)HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT等,U+275B~U+2763这一块区域,属于Block: Dingbats,确实是“图符”。