#1 - 2017-3-28 23:56
stecue
FixCJK! 是为 Gecko​/​Webkit​/​Blink 内核浏览器编写的用户脚本,适用平台包括但不限于:Firefox​/​Icecat​/​Chrome​/​Chromium​/​Opera,以及各种采用 Webkit​/​Blink 内核的“国产”浏览器。主要功能为:

强力后备(fallback)字体设置。忽略浏览器和系统设定,直接设定映射为“无衬线(sans-serif)”和“有衬线(serif)”的实际字体列表。对于没有指定具体字体或者非中文操作系统环境中的网页有奇效。
替换中易宋体为矢量字体。除此之外,本脚本并不替换网页指定的第一顺位的字体。
将中英文混排中错误使用了中易宋体的英文部分设置为使用单独的拉丁字体。默认是 Ubuntu Mono(其字符宽度正好是中易宋体的一半并自带良好的 hinting 信息)。
对于矢量粗体,将使用字体文件提供的真粗体而不是合成伪粗体(最初目的是绕过 Linux 版 Chrome​/​Chromium 的这个 bug)。
设定中文全角标点字体。对于弯引号,根据上下文自动识别并设定为全角字体。
中文全角标点压缩。弥补中文字体标点不自带 kerning 信息的普遍设计缺陷,使中文网页排版更符合印刷惯例并贴近国家标准。
自动空格:中英文之间自动加空格,类似于这个扩展。考虑到大多数人的习惯,自动加空格仅在“双击”之后触发。
其中功能 1-4 及 7 对所有浏览器的所有版本均有效;功能 5-6 只保证在最新 Gecko 和 Webkit/Blink 内核上正常工作。
---------------------------------------------------
这个帖子是为了解决 Issues #99 设立的测试贴,请路过的不要见怪。(bgm07)
#2 - 2017-3-28 23:57
FixCJK! 是为 Gecko​/​Webkit​/​Blink 内核浏览器编写的用户脚本,适用平台包括但不限于:Firefox​/​Icecat​/​Chrome​/​Chromium​/​Opera,以及各种采用 Webkit​/​Blink 内核的“国产”浏览器。主要功能为:
#3 - 2017-3-28 23:58
FixCJK! 是为 Gecko​/​Webkit​/​Blink 内核浏览器编写的用户脚本,适用平台包括但不限于:Firefox​/​Icecat​/​Chrome​/​Chromium​/​Opera,以及各种采用 Webkit​/​Blink 内核的“国产”浏览器。主要功能为:
直接拖拽引用似乎并没有问题……
#4 - 2017-3-29 00:50
FixCJK! 是为 Gecko​/​Webkit​/​Blink 内核浏览器编写的用户脚本,适用平台包括但不限于:Firefox​/​Icecat​/​Chrome​/​Chromium​/​Opera,以及各种采用 Webkit​/​Blink 内核的“国产”浏览器。主要功能为:
引用有问题的话可以暂时关闭脚本,注意Tampermonkey 的Auto reload得关掉,要不然自动重载可能会丢掉正在编辑的内容。(没法上传、插入本地图片么?)
#4-1 - 2017-3-29 01:02
Explorare
用 BBCODE,
[img]url[img]
#4-2 - 2017-3-29 01:02
Explorare
Explorare 说: 用 BBCODE,[img]url[img]
测试
#5 - 2017-3-29 05:48
(V1046-R MAHORO)
借宝地问个问题

关于“全角/半角”,约定俗成的大概意思大家都懂,不过到底有没有严格的定义?

到底是讲的字符宽度,还是二字节编码(比如GB或者shift-JIS)下的编码长度?当然一般情况下两者匹配,但是也有少数情况不匹配的,比如这里的弯引号。
#5-1 - 2017-3-29 06:35
stecue
全角和半角跟编码“长度”没关系。所谓“全角”,就是“全宽”。因为中文字符比较大,在中英文混排的页面中(尤其是采用等宽字体排版的页面),一个中文宽度是一个英文宽度的两倍,所以就把中文宽度的标点符号叫做“全角”符号,英文宽度的标点符号叫做“半角”符号。中文全宽的逗号、句号等等和英文的“半宽”逗号、句号在编码上完全是两个不同的位点。

但到了引号就出问题了。“全角”的引号并没有一个专门的位点,它和英文引号的编码,无论是 GB2312 还是 Unicode 的各种实现,都是完全一样的。所谓的“全角引号”和“半角引号”的区别,完全就是字体的不同。也就是说,如果要同时显示中英文两种引号,至少要使用两种字体。一种字体中引号是全角的,另外一种字体中引号是半角的。微软雅黑中的引号是半角的,所以如果要在中文文章中显示出“全角”引号,单用微软雅黑是不行的,必须要配合其他字体,比如思源黑体或者华文黑体。

另外,纯全角符号留白太多,也不好看,尤其是出现多个连续符号的情况下。比如下面这段话:

她轻轻地哼起了《摇篮曲》:“月儿明,风儿静,树叶儿遮窗棂啊……”

以及

顿号(、Chinese back-sloping comma),是表示并列词语之间的停顿的符号。“句子内部并列词语之间的停顿,用顿号 [1]。”“用在平列连用的单字、词语之间,或标示条列次序的文字之后 [2] 。”

都出现了连续三个标点的情况。在正规排版时这都需要“标点压缩”来减小标点之间的空白。Word 也默认启用了压缩标点空白的功能。实际上即使单个全角句号,所占空白也过大,也应该进行压缩。当然浏览器默认的排版引擎是不管这么多的,只能靠用户脚本,比如 FixCJK! 来解决。当然它能解决的问题不只这些,具体可以参看开发主页
#5-2 - 2017-3-29 08:52
烈之斩
stecue 说: 所谓“全角”,就是“全宽”
这个定义是谁制定的?如果如此,为什么不直接用全宽做名字,又单独发明了“全角”这个说法?
#5-3 - 2017-3-29 08:54
烈之斩
stecue 说: 微软雅黑中的引号是半角的,所以如果要在中文文章中显示出“全角”引号,单用微软雅黑是不行的
微软雅黑的弯引号是全宽啊。

#5-4 - 2017-3-29 09:31
LunarShaddow🌙
烈之斩 说: 微软雅黑的弯引号是全宽啊。
总感觉这个“”左边和右边是反的……
#5-5 - 2017-3-29 09:49
烈之斩
LunarShaddow 说: 总感觉这个“”左边和右边是反的……
哈哈,微软雅黑著名的坑爹之处之一,弯引号丑哭
#5-6 - 2017-3-29 10:08
Explorare
stecue 说: 全角和半角跟编码“长度”没关系。所谓“全角”,就是“全宽”。因为中文字符比较大,在中英文混排的页面中(尤其是采用等宽字体排版的页面),一个中文宽度是一个英文宽度的两倍,所以就把中文宽度的标点符号叫做“...
#5-7 - 2017-3-29 12:20
Explorare
<cjktext class="wrappedCJK2Fix CJKTestedAndLabeled PunctSpace2Fix CJK2Fix Safe2FixCJK MarksFixedE135 FontsFixedE137">烈之斩</cjktext> 说: stecue 说: 所谓“全角”,就是“全宽”这个定义是谁制定的?如果如此,为什么不直接用全宽做名字,又单独发明了“全角”这个说法?
测试
#5-8 - 2017-3-29 13:30
stecue
<cjktext class="wrappedCJK2Fix CJKTestedAndLabeled PunctSpace2Fix CJK2Fix Safe2FixCJK MarksFixedE135 FontsFixedE137">烈之斩</cjktext> 说: stecue 说: 所谓“全角”,就是“全宽”这个定义是谁制定的?如果如此,为什么不直接用全宽做名字,又单独发明了“全角”这个说法?
是跟日本人学的。hthttps://ja.wikipedia.org/wiki/%E ... 8%E5%8D%8A%E8%A7%92
#5-9 - 2017-3-29 14:06
stecue
<cjktext class="wrappedCJK2Fix CJKTestedAndLabeled PunctSpace2Fix CJK2Fix Safe2FixCJK MarksFixedE135 FontsFixedE137 SpacesFixedE133">烈之斩</cjktext> 说: stecue 说 : 微软雅黑中的引号是半角的,所以如果要在中文文章中显示出“全角”引号,单用微软雅黑是不行的微软雅黑的弯引号是全宽啊。
这个我说错了,雅黑的引号确实是全宽。
但是一般网页如果指定了字体fallback列表,由于一般英文字体在前,雅黑的全宽引号就被英文半宽引号替代了。除非网页只指定语言(lang属性)和sans, serif之类的虚拟字体,然后真实字体在浏览器中指定为雅黑,那么对于显式指定为中文的部分其引号是用全宽的雅黑显示的。
#5-10 - 2017-3-29 15:05
林卯
LunarShaddow 说: 总感觉这个“”左边和右边是反的……
我有个想法,在不动系统字体的前提下,自制一个能分清前后引号(不要求全角)的极小字体,放到浏览器所有字体前面。
是不是只用Stylish就能达到目的了?
如果可以的话我就做一个,因为我正好有这个需求又不敢用这个脚本。
#5-11 - 2017-3-29 17:04
烈之斩
stecue 说: 是跟日本人学的。hthttps://ja.wikipedia.org/wiki/%E ... 8%E5%8D%8A%E8%A7%92
原来如此,终于搞明白了多年来的疑惑。多谢
#5-12 - 2017-3-30 06:12
stecue
林卯 说: 我有个想法,在不动系统字体的前提下,自制一个能分清前后引号(不要求全角)的极小字体,放到浏览器所有字体前面。
是不是只用Stylish就能达到目的了?
如果可以的话我就做一个,因为我正好有这个需求又不...
单用 Stylish 似乎很难放到所有字体前面。以前我好像捣鼓过,如果有的元素用"!"强制应用它自己的CSS配置,似乎就没法用Stylish硬改。这也是我写JS脚本的原因之一,要改就改到底。好久没捣鼓了,说的大概不准哈。

但是那种特别的元素还是比较少啦,绝大部分情况应该可以用 Stylish 搞定。
#5-13 - 2017-4-3 12:30
stecue
烈之斩 说: stecue 说 : 是跟日本人学的。hthttps://ja.wikipedia.org/wiki/%E ... 8%E5%8D%8A%E8%A7%92 原来如此,终于搞明白了多年来的疑惑。多谢
不客气不客气 !;p
#5-14 - 2017-4-3 12:51
Explorare
烈之斩 说: stecue 说: 是跟日本人学的。hthttps://ja.wikipedia.org/wiki/%E ... 8%E5%8D%8A%E8%A7%92原来如此,终于搞明白了多年来的疑惑。多谢
测试
#6 - 2017-3-29 10:25
你们不开着插件回复#5-2试一下吗……他昵称是中文,可能效果不一样
我猜:
首先,这插件会通过包围一层标签来调整一段cjk字符的显示

而bangumi前端代码在回复一个二级回复(比如#5-4回复#5-3)时,会引用那个回复的内容,并在开头加上 “{昵称}说:”。
这个昵称看来是前端代码从页面上直接取某个元素的 innerHTML,但它并没有料到这个html已经被修改过(加了一层标签),而是整个当作昵称原封不动添加到我们的回复的引用里了。
结果是这堆东西被当成内容显示出来。
#6-1 - 2017-3-29 12:20
Explorare
Bingo! 就是这个问题。
#6-2 - 2017-3-29 13:52
stecue
嗯,看来是直接截取了<a>标签的innterHTML。把CJK字符用标签包起来的一个主要目的是不影响EventListener,否则很多事件就无法触发了。

可以对一些特定的class禁用脚本。但是这也只是 case by case 的处理办法。对所有<a>标签都禁用就似乎过分误杀了……
#6-3 - 2017-3-29 14:48
Donuts
stecue 说: 嗯,看来是直接截取了<a>标签的innterHTML。把CJK字符用标签包起来的一个主要目的是不影响EventListener,否则很多事件就无法触发了。

可以对一些特定的class禁用脚本。但是这...
这种在不同网站都启用用的脚本感觉会有挺多这种问题发生,因为每个站的前端功能写的五花八门参差不齐…改了dom结构之后真不知道会发生什么(bgm38)
可能需要一个自定义规则列表,以域名(或者正则/通配符匹配url)和选择器为条件,放过一些元素不处理。

没看过你脚本的代码,上面建议仅供参考。
#6-4 - 2017-4-3 12:33
stecue
Donuts. 说: stecue 说 : 嗯,看来是直接截取了 <a> 标签的 innterHTML。把 CJK 字符用标签包起来的一个主要目的是不影响 EventListener,否则很多事件就无法触发了。

可以对一...
嗯,现在有黑名单列表,但是比较分散。class,tag,网页……都有各自的列表。确实需要考虑一下把黑名单规则重新统一处理一下……
#7 - 2017-4-3 15:21
(2011 冬、始)
测试请去test小组
#7-1 - 2017-4-3 16:03