Unicode 左/右八分之三块高度不一样?

问题描述 投票:0回答:1

为什么 Unicode 左八分之三块右八分之三块字符具有不同的高度和宽度? 我已经用几种字体对此进行了测试:

🮈▍🮈▍🮈▍

我正在尝试找到与 传统计算符号 Unicode 块中的 2x3 字符对齐的完整垂直左右条。例如,下面的字符应该形成一个完美的矩形:

🮈🬰▍

这是图像中相同的形状:

enter image description here


编辑

我编写了一些简单的代码来生成这三个字符的图像,没有后备:

#!/usr/bin/env python3
# https://stackoverflow.com/questions/57781469/

from PIL import Image, ImageDraw, ImageFont

width=500
height=100
back_ground_color=(255,255,255)
font_size=80
font_color=(0,0,0)
unicode_text = '🮈🬰▍'

fonts = {
    'lastresort': 'LastResort-Regular.ttf',
    'unifont': 'unifont-15.1.04.otf',
    'unifont_upper': 'unifont_upper-15.1.04.otf',
    'noto': 'NotoSans-Regular.ttf',
    '2001': 'CODE2001.TTF'
}

for name, font in fonts.items():
    im = Image.new("RGB", (width,height), back_ground_color)
    draw = ImageDraw.Draw(im)
    unicode_font = ImageFont.truetype(font, font_size)
    draw.text((10,10), unicode_text, font=unicode_font, fill=font_color)
    im.save(f"text_{name}.jpg")

text_lastresort.jpg

enter image description here

text_unifont.jpg

enter image description here

text_unifont_upper.jpg

enter image description here

text_noto.jpg

enter image description here

text_2001.jpg

enter image description here

unicode special-characters non-ascii-characters ascii-art
1个回答
2
投票

Unicode 没有定义字形的视觉布局。这是由字体定义的。我同意字体选择这些不同的高度是令人惊讶的,但这与 Unicode 无关。如果这导致问题,您需要使用不同的字体。

您使用哪些字体进行了测试? 这些不是字体中特别常见的字符。您测试的字体很可能没有这些字符,并且您的布局系统在所有测试中使用相同的后备字体(称为“级联”)。在我的系统 (macOS) 上,左侧块在我的默认字体中可用,但右侧块不可用。您可能会从不同的字体中选择正确的块,这可以解释不同的外观。

我怀疑您需要重新排序字体级联,以便从同一字体中选择所有字形。如何做到这一点取决于您使用什么来显示它。

© www.soinside.com 2019 - 2024. All rights reserved.