首页 > 解决方案 > Java:如何在纯文本中对齐 UTF 杂项符号

问题描述

我正在用 Java 创建一个基于终端的草稿应用程序,我想使用 UTF-8 中的杂项符号中的实际草稿字符。但是,它们似乎与我的终端中的标准 Latin-1 (ASCII) 字符不能很好地对齐:

    +---+---+---+---+---+---+---+---+---+---+
 0  |   | ⛂ |   | ⛂ |   | ⛂ |   | ⛂ |   | ⛂ |
    +---+---+---+---+---+---+---+---+---+---+
 1  | ⛂ |   | ⛂ |   | ⛂ |   | ⛂ |   | ⛂ |   |
    +---+---+---+---+---+---+---+---+---+---+
...

 9  | ⛀ |   | ⛀ |   | ⛀ |   | ⛀ |   | ⛀ |   |
    +---+---+---+---+---+---+---+---+---+---+

我意识到这与渲染的特定字体有很大关系,但是有没有办法以垂直条对齐任何字体的方式对齐它们?

标签: javautf-8command-line-interface

解决方案


与更广泛使用的等宽字体(如Courier New)不同,它们不能正确等宽一些特殊字符,JuliaMono 可以满足您的需要

JuliaMono 是一种等宽字体,专为编程和其他需要大量专业和技术 Unicode 字符的文本编辑环境而设计。它旨在作为一项实验,在葡萄牙里斯本举行的 2020 年 JuliaCon 会议上进行展示。

JuliaMono 是:

free

distributed with a liberal licence

suitable for scientific and technical programming as well as for general purpose hacking

full of Unicode goodness

easy to use, simple, unquirky, friendly, and approachable

available for MacOS, Unix, and Windows

您可以从 GitHub 下载 zip 文件。解压下载后,有16种字体(如JuliaMono-LightItalic.ttfJuliaMono-ExtraBoldItalic.ttf等)可供选择安装。

我刚刚安装了JuliaMono-Regular.ttf,然后在 Windows 记事本中选择它并粘贴到您的示例数据中。等间距工作正常;Unicode 的杂项符号以与竖线等 ASCII 字符相同的宽度呈现。这是一个屏幕截图:

使用 Julia Mono

另一点:您没有提及您的环境,但如果您在 Windows 上并从命令行运行您的应用程序,您可能还需要设置您的代码页。请注意,在下面的屏幕截图中,我的默认代码页是 437,它无法呈现Miscellaneous Symbols。要解决此问题,以及将字体设置为JuliaMono的某些变体,还要确保使用chcp 65001将代码页设置为 UTF-8 :

命令行


推荐阅读