java - Java:如何在纯文本中对齐 UTF 杂项符号
问题描述
我正在用 Java 创建一个基于终端的草稿应用程序,我想使用 UTF-8 中的杂项符号中的实际草稿字符。但是,它们似乎与我的终端中的标准 Latin-1 (ASCII) 字符不能很好地对齐:
+---+---+---+---+---+---+---+---+---+---+
0 | | ⛂ | | ⛂ | | ⛂ | | ⛂ | | ⛂ |
+---+---+---+---+---+---+---+---+---+---+
1 | ⛂ | | ⛂ | | ⛂ | | ⛂ | | ⛂ | |
+---+---+---+---+---+---+---+---+---+---+
...
9 | ⛀ | | ⛀ | | ⛀ | | ⛀ | | ⛀ | |
+---+---+---+---+---+---+---+---+---+---+
我意识到这与渲染的特定字体有很大关系,但是有没有办法以垂直条对齐任何字体的方式对齐它们?
解决方案
与更广泛使用的等宽字体(如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.ttf、JuliaMono-ExtraBoldItalic.ttf等)可供选择安装。
我刚刚安装了JuliaMono-Regular.ttf,然后在 Windows 记事本中选择它并粘贴到您的示例数据中。等间距工作正常;Unicode 的杂项符号以与竖线等 ASCII 字符相同的宽度呈现。这是一个屏幕截图:
另一点:您没有提及您的环境,但如果您在 Windows 上并从命令行运行您的应用程序,您可能还需要设置您的代码页。请注意,在下面的屏幕截图中,我的默认代码页是 437,它无法呈现Miscellaneous Symbols。要解决此问题,以及将字体设置为JuliaMono的某些变体,还要确保使用chcp 65001将代码页设置为 UTF-8 :
推荐阅读
- docker - Jenkins 管道构建了一个 dockerfile,其中包含我的 dockerhub 存储库的基本映像
- c - 是什么导致了这个 C 内存泄漏?(退出错误 137)
- c - 为什么使用 `mingw32` 链接可以解决 SDL2 的编译问题?
- ssl - TFS 2015 更新 4 请求被中止:无法创建 SSL/TLS 安全通道
- jenkins - 使用 Jenkins 系统变量初始化 @groovy.transform.Field
- vba - MS Access VBA 设置单个记录中单个字段的背景颜色
- java - React 应用程序不向 Java 服务器发送标头
- zsh - 无法在 Zsh 中编辑命令
- bash - 使用 xmlstarlet 添加缺失的元素?
- javascript - 如何在本机反应中不将搜索结果保存在 redux-persist 中?