2011-08-27 123 views
1

我不确定这是否是正确的地方问这个,但我不知道任何其他网站会更好。这个问题与编程有关,所以:显示全角字符w /正好是半角字符长度的两倍?

我正在写一个格式化的txt指南。请看看这段摘录:http://mad-gaksha.homelinux.net/public/width.txt。我需要显示全角字符,以便它们占用半角字符的两倍空间。虽然等宽字体似乎只用半角字符正常工作,但我尝试过的大多数全宽“固定宽度”字体没有产生所需的结果。

在firefox中,当我将等宽字体(“编辑”>“首选项”>“内容”>“高级”)设置为“等宽”时,此功能可用。但只适用于14的字体大小。与gedit相同的东西,固定宽度字体MS-Gothic,仅适用于字体大小13/14。

因为我觉得这种行为很奇怪,不希望我的读者受到技术细节的困扰,有没有人有建议或给任何资源或可以解释这里发生了什么?为什么看起来很难显示每个固定大小的字形?

在此先感谢您抽出时间。

+2

您可以使用HTML而不是文本。这将消除这个问题。而且你的用户不会感到烦恼。 –

回答

0

它看起来像是舍入小数像素。

当字形宽度不是整个屏幕像素数时,字体渲染器可能会调整水平位置。我相信gedit和Firefox在Linux上使用的开罗渲染不会为字体做子像素定位,所以这可能是必要的。

在真正的等宽字体中,这并不重要,因为每个字形都具有相同的宽度,因此可以接受相同的处理,但在有全角和半角字符混合的情况下,舍入将不会一致,除非字形碰巧是整个像素宽度的数字(这在你的情况下发生在字体大小14)。

请注意,在大多数小尺寸的Windows上,MS Gothic等字体将使用字体文件中的自定义内置位图来呈现,而不是渲染轮廓及其度量。这使得所有的字形必须是固定的像素宽度。然而,这确实导致了典型的老派'jaggy'渲染风格。

如果您正在生成格式化文本文件,您无法对此做任何事情。您只能希望您的目标受众拥有合适的日文等宽字体,并且可以以特定的字体大小切换到这些字体。

我同意克莱门特的评论,即使用HTML来获得你想要的渲染会更强大,现代和方便。使用HTML进行布局可以让您不必担心排列字符,并且可以获取比所有半宽等宽拉丁文字更难看的字体。

+0

这就是为什么字体总是在微软上与苹果相比显得非常残酷的原因?我使用Opera并经常缩放到有趣的百分比。苹果的字体非常流畅,但微软却非常可怕。 – tchrist

+0

@tchrist:当然,Windows上的CJK字体历史上一直很糟糕。在ClearType之前,字体'平滑'算法很糟糕,特别是汉字的破坏。即使在XP +中使用ClearType,你也必须拥有像Meiryo这样的字体,这些字体是专门设计用来使用严格水平笔画,而不是接近水平笔画的,因为ClearType只偏好沿着X轴的反锯齿(通常适用于拉丁字母的形状,但对中日韩表意文字来说是一场灾难)。 – bobince

+0

这些天在WPF中终于[修复](http://msdn.microsoft.com/en-us/library/ms749295.aspx#y-direction_antialiasing),但大多数应用程序都没有使用,所以我们坚持在此期间使用Meiryo或获得锯齿水平笔划。 – bobince